diff --git a/.hgtags b/.hgtags index 8b1b58bc5e5600506c76cd47c7e257db182b238f..162c25cd1d83af4cf3876c613514cb54b5c8748d 100644 --- a/.hgtags +++ b/.hgtags @@ -23,3 +23,6 @@ d2382d374139850efa5bb6adfb229e3e656cfc40 howard-demo d40ac9dd949cba6dab1cc386da6a2027690c2519 alpha-5 d6781e22543acd7e21b967209f3c6e7003d380e3 fork to viewer-2-0 c6e6324f5be1401f077ad18a4a0f6b46451c2f7b last_sprint +7076e22f9f43f479a4ea75eac447a36364bead5a beta_2.1.3 +7076e22f9f43f479a4ea75eac447a36364bead5a 2.2.0-beta1 +9822eb3e25f7fe0c28ffd8aba45c507caa383cbc 2.2.0-beta2 diff --git a/BuildParams b/BuildParams index f70488d94250ebe58dbfc6e2972e59cad7f63649..898cb7bbd3df10da6e56f737dc7cae3ef24a9bbc 100644 --- a/BuildParams +++ b/BuildParams @@ -39,8 +39,9 @@ snowstorm_viewer-development.email = viewer-development-builds@lists.secondlife. # ======================================== # Viewer Beta # ======================================== -viewer-beta.viewer_channel = "Second Life Beta" -viewer-beta.login_channel = "Second Life Beta" +viewer-beta.viewer_channel = "Second Life Beta Viewer" +viewer-beta.login_channel = "Second Life Beta Viewer" +viewer-beta.build_debug_release_separately = true viewer-beta.build_viewer_update_version_manager = true # ======================================== @@ -48,6 +49,7 @@ viewer-beta.build_viewer_update_version_manager = true # ======================================== viewer-release.viewer_channel = "Second Life Release" viewer-release.login_channel = "Second Life Release" +viewer-release.build_debug_release_separately = true viewer-release.build_viewer_update_version_manager = true # ======================================== @@ -78,6 +80,14 @@ brad-parabuild.email = brad@lindenlab.com brad-parabuild.build_server = false brad-parabuild.build_server_tests = false +# ======================================== +# CG +# ======================================== + +cg_viewer-development_lenny.collect_metrics = true +cg_viewer-development_lenny.show_changes_since = 4b140ce7839d +cg_viewer-development_lenny.email = cg@lindenlab.com + # ======================================== # gooey # ======================================== diff --git a/build.sh b/build.sh index 878aa45ce37381e373e31db4b6948f69368bbc19..9b4d4a16dc7d6d045933c17a6a55759a7620a191 100755 --- a/build.sh +++ b/build.sh @@ -63,7 +63,8 @@ pre_build() -DVIEWER_LOGIN_CHANNEL:STRING="$login_channel" \ -DINSTALL_PROPRIETARY:BOOL=ON \ -DLOCALIZESETUP:BOOL=ON \ - -DPACKAGE:BOOL=ON + -DPACKAGE:BOOL=ON \ + -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE end_section "Pre$variant" } @@ -113,11 +114,15 @@ then if [ -x "$top/../buildscripts/hg/bin/build.sh" ] then exec "$top/../buildscripts/hg/bin/build.sh" "$top" + elif [ -r "$top/README" ] + then + cat "$top/README" + exit 1 else cat <<EOF This script, if called in a development environment, requires that the branch independent build script repository be checked out next to this repository. -This repository is located at http://hg.lindenlab.com/parabuild/buildscripts +This repository is located at http://hg.secondlife.com/buildscripts EOF exit 1 fi @@ -222,7 +227,10 @@ do fi else begin_section "Build$variant" - build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | grep --line-buffered "^##teamcity" + build "$variant" "$build_dir" > "$build_log" 2>&1 + begin_section Tests + grep --line-buffered "^##teamcity" "$build_log" + end_section Tests if `cat "$build_dir/build_ok"` then echo so far so good. @@ -251,13 +259,15 @@ then begin_section "Build$variant" build_dir=`build_dir_$arch $variant` build_dir_stubs="$build_dir/win_setup/$variant" - tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity" if `cat "$build_dir/build_ok"` then echo so far so good. else record_failure "Parallel build of \"$variant\" failed." fi + begin_section Tests + tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity" + end_section Tests end_section "Build$variant" done end_section WaitParallel @@ -278,6 +288,7 @@ then succeeded=$build_coverity else upload_item installer "$package" binary/octet-stream + upload_item quicklink "$package" binary/octet-stream # Upload crash reporter files. case "$last_built_variant" in diff --git a/doc/contributions.txt b/doc/contributions.txt index 8087a870042bc9bfaf099303883a91cd1634b00b..d179c0fb8cd1f7154bc71b390ef246b17cd72d9e 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -20,6 +20,7 @@ Aimee Trescothick SNOW-227 SNOW-570 SNOW-572 + SNOW-575 VWR-3321 VWR-3336 VWR-3903 @@ -33,6 +34,7 @@ Aimee Trescothick VWR-6550 VWR-6583 VWR-6482 + VWR-6918 VWR-7109 VWR-7383 VWR-7800 @@ -59,13 +61,17 @@ Aimee Trescothick Alejandro Rosenthal VWR-1184 Aleric Inglewood + SNOW-522 + SNOW-764 VWR-10001 VWR-10759 VWR-10837 VWR-12691 VWR-13996 VWR-14426 + SNOW-84 SNOW-766 + STORM-163 Ales Beaumont VWR-9352 SNOW-240 @@ -164,6 +170,8 @@ Boroondas Gupte SNOW-624 SNOW-737 VWR-233 + VWR-20583 + VWR-20891 WEB-262 Bulli Schumann CT-218 @@ -380,6 +388,7 @@ Matthew Dowd VWR-1761 VWR-2681 McCabe Maxsted + SNOW-387 VWR-1318 VWR-4065 VWR-4826 @@ -548,6 +557,8 @@ Robin Cornelius SNOW-514 SNOW-520 SNOW-585 + SNOW-599 + SNOW-747 VWR-2488 VWR-9557 VWR-11128 @@ -556,6 +567,7 @@ Robin Cornelius VWR-12758 VWR-12763 VWR-12995 + VWR-20911 Ryozu Kojima VWR-53 VWR-287 @@ -645,10 +657,15 @@ Teardrops Fall VWR-5366 Techwolf Lupindo SNOW-92 + SNOW-592 SNOW-649 + SNOW-650 + SNOW-687 SNOW-680 SNOW-681 + SNOW-685 SNOW-690 + SNOW-746 VWR-12385 tenebrous pau VWR-247 @@ -656,9 +673,12 @@ Tharax Ferraris VWR-605 Thickbrick Sleaford SNOW-207 + SNOW-390 SNOW-421 SNOW-462 SNOW-586 + SNOW-592 + SNOW-635 SNOW-743 VWR-7109 VWR-9287 diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake index 2dd296bf12181f14eac9fe6446ad95b3d828a627..95ed5d6bc81b43d4749f162927f709b6fef7da3d 100644 --- a/indra/cmake/Copy3rdPartyLibs.cmake +++ b/indra/cmake/Copy3rdPartyLibs.cmake @@ -221,6 +221,7 @@ elseif(LINUX) libcrypto.so.0.9.7 libdb-4.2.so libexpat.so + libexpat.so.1 libgmock_main.so libgmock.so.0 libgmodule-2.0.so diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake new file mode 100644 index 0000000000000000000000000000000000000000..1a0493be5ed9d782374a391f153d2a21a26a0f66 --- /dev/null +++ b/indra/cmake/FindGoogleBreakpad.cmake @@ -0,0 +1,40 @@ +# -*- cmake -*- + +# - Find Google BreakPad +# Find the Google BreakPad includes and library +# This module defines +# BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR, where to find exception_handler.h, etc. +# BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad. +# BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad. +# also defined, but not for general use are +# BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library. + +FIND_PATH(BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR google_breakpad/exception_handler.h) + +SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client) +FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY + NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} + ) + +IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) + SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY}) + SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES") +ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) + SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO") +ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR) + + +IF (BREAKPAD_EXCEPTION_HANDLER_FOUND) + IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY) + MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}") + ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY) +ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND) + IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED) + MESSAGE(FATAL_ERROR "Could not find Google BreakPad library") + ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED) +ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND) + +MARK_AS_ADVANCED( + BREAKPAD_EXCEPTION_HANDLER_LIBRARY + BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR + ) diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake index 8270c0fabb0024b6cac4a88c573c812a10059947..7498674042a9707c3e35f8e1e7ba95dad735cf49 100644 --- a/indra/cmake/GoogleBreakpad.cmake +++ b/indra/cmake/GoogleBreakpad.cmake @@ -2,8 +2,8 @@ include(Prebuilt) if (STANDALONE) - MESSAGE(FATAL_ERROR "*TODO standalone support for google breakad is unimplemented") - # *TODO - implement this include(FindGoogleBreakpad) + set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON) + include(FindGoogleBreakpad) else (STANDALONE) use_prebuilt_binary(google_breakpad) if (DARWIN) diff --git a/indra/cmake/PulseAudio.cmake b/indra/cmake/PulseAudio.cmake index f8087a80831cc85b19050b0cd3b3596c250e3e08..e918de0198aca68e0b4de20e6e376b3868f88459 100644 --- a/indra/cmake/PulseAudio.cmake +++ b/indra/cmake/PulseAudio.cmake @@ -1,28 +1,28 @@ # -*- cmake -*- include(Prebuilt) -if (STANDALONE) - include(FindPkgConfig) +set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.") - pkg_check_modules(PULSEAUDIO REQUIRED libpulse-mainloop-glib) +if (PULSEAUDIO) + if (STANDALONE) + include(FindPkgConfig) + + pkg_check_modules(PULSEAUDIO libpulse) -elseif (LINUX) - use_prebuilt_binary(pulseaudio) - set(PULSEAUDIO_FOUND ON FORCE BOOL) - set(PULSEAUDIO_INCLUDE_DIRS - ${LIBS_PREBUILT_DIR}/include + elseif (LINUX) + use_prebuilt_binary(pulseaudio) + set(PULSEAUDIO_FOUND ON FORCE BOOL) + set(PULSEAUDIO_INCLUDE_DIRS + ${LIBS_PREBUILT_DIR}/include + ) + # We don't need to explicitly link against pulseaudio itself, because + # the viewer probes for the system's copy at runtime. + set(PULSEAUDIO_LIBRARIES + # none needed! ) - # We don't need to explicitly link against pulseaudio itself, because - # the viewer probes for the system's copy at runtime. - set(PULSEAUDIO_LIBRARIES - # none needed! - ) -endif (STANDALONE) + endif (STANDALONE) +endif (PULSEAUDIO) if (PULSEAUDIO_FOUND) - set(PULSEAUDIO ON CACHE BOOL "Build with PulseAudio support, if available.") -endif (PULSEAUDIO_FOUND) - -if (PULSEAUDIO) add_definitions(-DLL_PULSEAUDIO_ENABLED=1) -endif (PULSEAUDIO) +endif (PULSEAUDIO_FOUND) diff --git a/indra/cmake/Variables.cmake b/indra/cmake/Variables.cmake index bfaf3f4f26fc4d88958f0652c96f075c01623d5e..230e228c6257002685bbf904d2ef1cbcfa879984 100644 --- a/indra/cmake/Variables.cmake +++ b/indra/cmake/Variables.cmake @@ -54,19 +54,20 @@ if (${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(LINUX ON BOOl FORCE) # If someone has specified a word size, use that to determine the - # architecture. Otherwise, let the architecture specify the word size. + # architecture. Otherwise, let the compiler specify the word size. + # Using uname will break under chroots and other cross arch compiles. RC if (WORD_SIZE EQUAL 32) set(ARCH i686) elseif (WORD_SIZE EQUAL 64) set(ARCH x86_64) else (WORD_SIZE EQUAL 32) - execute_process(COMMAND uname -m COMMAND sed s/i.86/i686/ - OUTPUT_VARIABLE ARCH OUTPUT_STRIP_TRAILING_WHITESPACE) - if (ARCH STREQUAL x86_64) - set(WORD_SIZE 64) - else (ARCH STREQUAL x86_64) + if(CMAKE_SIZEOF_VOID_P MATCHES 4) + set(ARCH i686) set(WORD_SIZE 32) - endif (ARCH STREQUAL x86_64) + else(CMAKE_SIZEOF_VOID_P MATCHES 4) + set(ARCH x86_64) + set(WORD_SIZE 64) + endif(CMAKE_SIZEOF_VOID_P MATCHES 4) endif (WORD_SIZE EQUAL 32) set(LL_ARCH ${ARCH}_linux) diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index 104585c19532f0b50ce91778494a90bc73d2b8cf..e377aeef484dc3a643f7207b15035e84620a82e1 100644 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -82,10 +82,24 @@ def main(command, libpath=[], vars={}): dirs = os.environ.get(var, "").split(os.pathsep) # Append the sequence in libpath print "%s += %r" % (var, libpath) - dirs.extend(libpath) + for dir in libpath: + # append system paths at the end + if dir in ('/lib', '/usr/lib'): + dirs.append(dir) + # prepend non-system paths + else: + dirs.insert(0, dir) + + # Filter out some useless pieces + clean_dirs = [] + for dir in dirs: + if dir and dir not in ('', '.'): + clean_dirs.append(dir) + # Now rebuild the path string. This way we use a minimum of separators # -- and we avoid adding a pointless separator when libpath is empty. - os.environ[var] = os.pathsep.join(dirs) + os.environ[var] = os.pathsep.join(clean_dirs) + print "%s = %r" % (var, os.environ[var]) # Now handle arbitrary environment variables. The tricky part is ensuring # that all the keys and values we try to pass are actually strings. if vars: diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp index 713b82509e7fa8f4e983df04939f4aaaed4b66ce..1f15b73182d9268e3985edb130f037d7bb89c36e 100644 --- a/indra/integration_tests/llui_libtest/llui_libtest.cpp +++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp @@ -185,10 +185,9 @@ void export_test_floaters() // Build a floater and output new attributes LLXMLNodePtr output_node = new LLXMLNode(); LLFloater* floater = new LLFloater(LLSD()); - LLUICtrlFactory::getInstance()->buildFloater(floater, - filename, - // FALSE, // don't open floater - output_node); + floater->buildFromFile( filename, + // FALSE, // don't open floater + output_node); std::string out_filename = xui_dir + filename; std::string::size_type extension_pos = out_filename.rfind(".xml"); out_filename.resize(extension_pos); diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp index b4921faeceb5af8989e7c5096d3b666ebc445f3d..0d0d9fbff61c0d69760497ee6636b43aba1bedd3 100644 --- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp +++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp @@ -78,7 +78,7 @@ void LLWidgetReg::initClass(bool register_widgets) LLDefaultChildRegistry::Register<LLMultiSlider> multi_slider_bar("multi_slider_bar"); LLDefaultChildRegistry::Register<LLMultiSliderCtrl> multi_slider("multi_slider"); LLDefaultChildRegistry::Register<LLPanel> panel("panel", &LLPanel::fromXML); - LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack", &LLLayoutStack::fromXML); + LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack"); LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar"); LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group"); LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor"); diff --git a/indra/lib/python/indra/util/named_query.py b/indra/lib/python/indra/util/named_query.py index 5c19368240afa08b8576f3f16ec01c4b738c5f76..6bf956107dec95dc92d042eab0920da463cea872 100644 --- a/indra/lib/python/indra/util/named_query.py +++ b/indra/lib/python/indra/util/named_query.py @@ -36,14 +36,6 @@ import re import time -#import sys # *TODO: remove. only used in testing. -#import pprint # *TODO: remove. only used in testing. - -try: - set = set -except NameError: - from sets import Set as set - from indra.base import llsd from indra.base import config @@ -195,8 +187,6 @@ def _convert_sql(self, sql): style. It also has to look for %:name% and :name% and ready them for use in LIKE statements""" if sql: - #print >>sys.stderr, "sql:",sql - # This first sub is to properly escape any % signs that # are meant to be literally passed through to mysql in the # query. It leaves any %'s that are used for @@ -408,7 +398,6 @@ def _construct_sql(self, params): # build the query from the options available and the params base_query = [] base_query.append(self._base_query) - #print >>sys.stderr, "base_query:",base_query for opt, extra_where in self._options.items(): if type(extra_where) in (dict, list, tuple): if opt in params: @@ -418,7 +407,6 @@ def _construct_sql(self, params): base_query.append(extra_where) if self._query_suffix: base_query.append(self._query_suffix) - #print >>sys.stderr, "base_query:",base_query full_query = '\n'.join(base_query) # Go through the query and rewrite all of the ones with the diff --git a/indra/lib/python/uuid.py b/indra/lib/python/uuid.py index 48dac84377a22f12a1c9f91343c39b8751d3977f..0bc21a35f8bbff7a6c1a7debb8c949f01d340f13 100644 --- a/indra/lib/python/uuid.py +++ b/indra/lib/python/uuid.py @@ -446,8 +446,14 @@ def uuid1(node=None, clock_seq=None): def uuid3(namespace, name): """Generate a UUID from the MD5 hash of a namespace UUID and a name.""" - import md5 - hash = md5.md5(namespace.bytes + name).digest() + try: + # Python 2.6 + from hashlib import md5 + except ImportError: + # Python 2.5 and earlier + from md5 import new as md5 + + hash = md5(namespace.bytes + name).digest() return UUID(bytes=hash[:16], version=3) def uuid4(): diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp index 8843acc8911e577ff854944de60c6912d34b34fc..1cc03bddb8ecfe665fa7a5bd51b1d1a5585cd062 100644 --- a/indra/llaudio/llaudioengine.cpp +++ b/indra/llaudio/llaudioengine.cpp @@ -97,6 +97,7 @@ void LLAudioEngine::setDefaults() } mMasterGain = 1.f; + mInternalGain = 0.f; mNextWindUpdate = 0.f; mStreamingAudioImpl = NULL; @@ -247,15 +248,6 @@ void LLAudioEngine::idle(F32 max_decode_time) // Primarily does position updating, cleanup of unused audio sources. // Also does regeneration of the current priority of each audio source. - if (getMuted()) - { - setInternalGain(0.f); - } - else - { - setInternalGain(getMasterGain()); - } - S32 i; for (i = 0; i < MAX_BUFFERS; i++) { @@ -284,6 +276,12 @@ void LLAudioEngine::idle(F32 max_decode_time) continue; } + if (sourcep->isMuted()) + { + ++iter; + continue; + } + if (!sourcep->getChannel() && sourcep->getCurrentBuffer()) { // We could potentially play this sound if its priority is high enough. @@ -336,9 +334,9 @@ void LLAudioEngine::idle(F32 max_decode_time) // attached to each channel, since only those with active channels // can have anything interesting happen with their queue? (Maybe not true) LLAudioSource *sourcep = iter->second; - if (!sourcep->mQueuedDatap) + if (!sourcep->mQueuedDatap || sourcep->isMuted()) { - // Nothing queued, so we don't care. + // Muted, or nothing queued, so we don't care. continue; } @@ -418,6 +416,10 @@ void LLAudioEngine::idle(F32 max_decode_time) for (iter = mAllSources.begin(); iter != mAllSources.end(); ++iter) { LLAudioSource *sourcep = iter->second; + if (sourcep->isMuted()) + { + continue; + } if (sourcep->isSyncMaster()) { if (sourcep->getPriority() > max_sm_priority) @@ -691,15 +693,23 @@ bool LLAudioEngine::isWindEnabled() void LLAudioEngine::setMuted(bool muted) { - mMuted = muted; + if (muted != mMuted) + { + mMuted = muted; + setMasterGain(mMasterGain); + } enableWind(!mMuted); } - void LLAudioEngine::setMasterGain(const F32 gain) { mMasterGain = gain; - setInternalGain(gain); + F32 internal_gain = getMuted() ? 0.f : gain; + if (internal_gain != mInternalGain) + { + mInternalGain = internal_gain; + setInternalGain(mInternalGain); + } } F32 LLAudioEngine::getMasterGain() @@ -1243,13 +1253,14 @@ LLAudioSource::LLAudioSource(const LLUUID& id, const LLUUID& owner_id, const F32 mOwnerID(owner_id), mPriority(0.f), mGain(gain), - mType(type), + mSourceMuted(false), mAmbient(false), mLoop(false), mSyncMaster(false), mSyncSlave(false), mQueueSounds(false), mPlayedOnce(false), + mType(type), mChannelp(NULL), mCurrentDatap(NULL), mQueuedDatap(NULL) @@ -1301,6 +1312,10 @@ void LLAudioSource::updatePriority() { mPriority = 1.f; } + else if (isMuted()) + { + mPriority = 0.f; + } else { // Priority is based on distance @@ -1349,25 +1364,33 @@ bool LLAudioSource::setupChannel() bool LLAudioSource::play(const LLUUID &audio_uuid) { + // Special abuse of play(); don't play a sound, but kill it. if (audio_uuid.isNull()) { if (getChannel()) { getChannel()->setSource(NULL); setChannel(NULL); - addAudioData(NULL, true); + if (!isMuted()) + { + mCurrentDatap = NULL; + } } + return false; } + // Reset our age timeout if someone attempts to play the source. mAgeTimer.reset(); LLAudioData *adp = gAudiop->getAudioData(audio_uuid); - - bool has_buffer = gAudiop->updateBufferForData(adp, audio_uuid); - - addAudioData(adp); + if (isMuted()) + { + return false; + } + + bool has_buffer = gAudiop->updateBufferForData(adp, audio_uuid); if (!has_buffer) { // Don't bother trying to set up a channel or anything, we don't have an audio buffer. @@ -1392,10 +1415,11 @@ bool LLAudioSource::play(const LLUUID &audio_uuid) } -bool LLAudioSource::isDone() +bool LLAudioSource::isDone() const { const F32 MAX_AGE = 60.f; const F32 MAX_UNPLAYED_AGE = 15.f; + const F32 MAX_MUTED_AGE = 11.f; if (isLoop()) { @@ -1403,7 +1427,6 @@ bool LLAudioSource::isDone() return false; } - if (hasPendingPreloads()) { return false; @@ -1420,10 +1443,10 @@ bool LLAudioSource::isDone() // This is a single-play source if (!mChannelp) { - if ((elapsed > MAX_UNPLAYED_AGE) || mPlayedOnce) + if ((elapsed > (mSourceMuted ? MAX_MUTED_AGE : MAX_UNPLAYED_AGE)) || mPlayedOnce) { // We don't have a channel assigned, and it's been - // over 5 seconds since we tried to play it. Don't bother. + // over 15 seconds since we tried to play it. Don't bother. //llinfos << "No channel assigned, source is done" << llendl; return true; } @@ -1449,7 +1472,7 @@ bool LLAudioSource::isDone() if ((elapsed > MAX_UNPLAYED_AGE) || mPlayedOnce) { - // The sound isn't playing back after 5 seconds or we're already done playing it, kill it. + // The sound isn't playing back after 15 seconds or we're already done playing it, kill it. return true; } diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h index 6a5000d7ed384b6f1e18fed902172753fc5d2a4b..30d24906357a724b2ab7b292c6fddfb2a54805a5 100644 --- a/indra/llaudio/llaudioengine.h +++ b/indra/llaudio/llaudioengine.h @@ -118,8 +118,8 @@ class LLAudioEngine // Use these for temporarily muting the audio system. // Does not change buffers, initialization, etc. but // stops playing new sounds. - virtual void setMuted(bool muted); - virtual bool getMuted() const { return mMuted; } + void setMuted(bool muted); + bool getMuted() const { return mMuted; } #ifdef USE_PLUGIN_MEDIA LLPluginClassMedia* initializeMedia(const std::string& media_type); #endif @@ -239,6 +239,7 @@ class LLAudioEngine LLAudioBuffer *mBuffers[MAX_BUFFERS]; F32 mMasterGain; + F32 mInternalGain; // Actual gain set; either mMasterGain or 0 when mMuted is true. F32 mSecondaryGain[AUDIO_TYPE_COUNT]; F32 mNextWindUpdate; @@ -303,7 +304,8 @@ class LLAudioSource virtual void setGain(const F32 gain) { mGain = llclamp(gain, 0.f, 1.f); } const LLUUID &getID() const { return mID; } - bool isDone(); + bool isDone() const; + bool isMuted() const { return mSourceMuted; } LLAudioData *getCurrentData(); LLAudioData *getQueuedData(); @@ -325,6 +327,7 @@ class LLAudioSource LLUUID mOwnerID; // owner of the object playing the sound F32 mPriority; F32 mGain; + bool mSourceMuted; bool mAmbient; bool mLoop; bool mSyncMaster; diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 000648206faf4955def02d8e959e1561192f6fd3..0dfc540f542eb3179dc4a5305dedfe850133bb88 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -158,6 +158,7 @@ set(llcommon_HEADER_FILES lleventemitter.h llextendedstatus.h llfasttimer.h + llfasttimer_class.h llmetricperformancetester.h llfile.h llfindlocale.h diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index bc1ae37c2b5ac2fb260b957580118ded547d64ca..c45921cdec852503f547bce92af020100286a510 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -469,9 +469,9 @@ void LLFastTimer::NamedTimer::accumulateTimings() int hidx = cur_frame % HISTORY_NUM; timerp->mCountHistory[hidx] = timerp->mTotalTimeCounter; - timerp->mCountAverage = (timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1); + timerp->mCountAverage = ((U64)timerp->mCountAverage * cur_frame + timerp->mTotalTimeCounter) / (cur_frame+1); timerp->mCallHistory[hidx] = timerp->getFrameState().mCalls; - timerp->mCallAverage = (timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1); + timerp->mCallAverage = ((U64)timerp->mCallAverage * cur_frame + timerp->getFrameState().mCalls) / (cur_frame+1); } } } diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 92d9e1204a218562f45b6e18bc77adae7dc427d8..bd65ce85738ec6e14193b3f5eed0ba154ea38828 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -28,8 +28,8 @@ #define LL_LLVERSIONVIEWER_H const S32 LL_VERSION_MAJOR = 2; -const S32 LL_VERSION_MINOR = 1; -const S32 LL_VERSION_PATCH = 2; +const S32 LL_VERSION_MINOR = 2; +const S32 LL_VERSION_PATCH = 1; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llcommon/stdenums.h b/indra/llcommon/stdenums.h index 5931ba67c2414791ab57910ce78a6d623a1edfbe..9f86de124e8bc17d5e23b22adce9a3491235d1c6 100644 --- a/indra/llcommon/stdenums.h +++ b/indra/llcommon/stdenums.h @@ -113,8 +113,8 @@ enum EObjectPropertiesExtraID enum EAddPosition { ADD_TOP, - ADD_SORTED, - ADD_BOTTOM + ADD_BOTTOM, + ADD_DEFAULT }; enum LLGroupChange diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 9ce9ee2101dbd701b64664fb170949bdc5ad9b87..69ed0fb09c1406ab8fa7c16d27f3d5f7ed992434 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -74,6 +74,7 @@ bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::s // Queue up the media init message -- it will be sent after all the currently queued messages. LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "init"); + message.setValue("target", mTarget); sendMessage(message); mPlugin->init(launcher_filename, plugin_filename, debug); @@ -143,7 +144,7 @@ void LLPluginClassMedia::reset() mProgressPercent = 0; mClickURL.clear(); mClickTarget.clear(); - mClickTargetType = TARGET_NONE; + mClickUUID.clear(); // media_time class mCurrentTime = 0.0f; @@ -669,6 +670,18 @@ F64 LLPluginClassMedia::getCPUUsage() return result; } +void LLPluginClassMedia::sendPickFileResponse(const std::string &file) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file_response"); + message.setValue("file", file); + if(mPlugin->isBlocked()) + { + // If the plugin sent a blocking pick-file request, the response should unblock it. + message.setValueBoolean("blocking_response", true); + } + sendMessage(message); +} + void LLPluginClassMedia::cut() { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "edit_cut"); @@ -715,24 +728,9 @@ void LLPluginClassMedia::setJavascriptEnabled(const bool enabled) sendMessage(message); } -LLPluginClassMedia::ETargetType getTargetTypeFromLLQtWebkit(int target_type) +void LLPluginClassMedia::setTarget(const std::string &target) { - // convert a LinkTargetType value from llqtwebkit to an ETargetType - // so that we don't expose the llqtwebkit header in viewer code - switch (target_type) - { - case LLQtWebKit::LTT_TARGET_NONE: - return LLPluginClassMedia::TARGET_NONE; - - case LLQtWebKit::LTT_TARGET_BLANK: - return LLPluginClassMedia::TARGET_BLANK; - - case LLQtWebKit::LTT_TARGET_EXTERNAL: - return LLPluginClassMedia::TARGET_EXTERNAL; - - default: - return LLPluginClassMedia::TARGET_OTHER; - } + mTarget = target; } /* virtual */ @@ -945,6 +943,10 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mMediaName = message.getValue("name"); mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_NAME_CHANGED); } + else if(message_name == "pick_file") + { + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_PICK_FILE_REQUEST); + } else { LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -987,15 +989,13 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) { mClickURL = message.getValue("uri"); mClickTarget = message.getValue("target"); - U32 target_type = message.getValueU32("target_type"); - mClickTargetType = ::getTargetTypeFromLLQtWebkit(target_type); + mClickUUID = message.getValue("uuid"); mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_HREF); } else if(message_name == "click_nofollow") { mClickURL = message.getValue("uri"); mClickTarget.clear(); - mClickTargetType = TARGET_NONE; mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLICK_LINK_NOFOLLOW); } else if(message_name == "cookie_set") @@ -1005,6 +1005,20 @@ void LLPluginClassMedia::receivePluginMessage(const LLPluginMessage &message) mOwner->handleCookieSet(this, message.getValue("cookie")); } } + else if(message_name == "close_request") + { + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_CLOSE_REQUEST); + } + else if(message_name == "geometry_change") + { + mClickUUID = message.getValue("uuid"); + mGeometryX = message.getValueS32("x"); + mGeometryY = message.getValueS32("y"); + mGeometryWidth = message.getValueS32("width"); + mGeometryHeight = message.getValueS32("height"); + + mediaEvent(LLPluginClassMediaOwner::MEDIA_EVENT_GEOMETRY_CHANGE); + } else { LL_WARNS("Plugin") << "Unknown " << message_name << " class message: " << message_name << LL_ENDL; @@ -1159,6 +1173,25 @@ void LLPluginClassMedia::setBrowserUserAgent(const std::string& user_agent) sendMessage(message); } +void LLPluginClassMedia::proxyWindowOpened(const std::string &target, const std::string &uuid) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_opened"); + + message.setValue("target", target); + message.setValue("uuid", uuid); + + sendMessage(message); +} + +void LLPluginClassMedia::proxyWindowClosed(const std::string &uuid) +{ + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "proxy_window_closed"); + + message.setValue("uuid", uuid); + + sendMessage(message); +} + void LLPluginClassMedia::crashPlugin() { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_INTERNAL, "crash"); diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index ee53f3a4da30bbb3215638b7a1bfc63e95ea10de..9cb67fe9091b0f018d0cc19504add6e2caea6a86 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -156,6 +156,8 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner void setLowPrioritySizeLimit(int size); F64 getCPUUsage(); + + void sendPickFileResponse(const std::string &file); // Valid after a MEDIA_EVENT_CURSOR_CHANGED event std::string getCursorName() const { return mCursorName; }; @@ -176,7 +178,8 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner void setLanguageCode(const std::string &language_code); void setPluginsEnabled(const bool enabled); void setJavascriptEnabled(const bool enabled); - + void setTarget(const std::string &target); + /////////////////////////////////// // media browser class functions bool pluginSupportsMediaBrowser(void); @@ -193,6 +196,8 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner void browse_back(); void set_status_redirect(int code, const std::string &url); void setBrowserUserAgent(const std::string& user_agent); + void proxyWindowOpened(const std::string &target, const std::string &uuid); + void proxyWindowClosed(const std::string &uuid); // This is valid after MEDIA_EVENT_NAVIGATE_BEGIN or MEDIA_EVENT_NAVIGATE_COMPLETE std::string getNavigateURI() const { return mNavigateURI; }; @@ -218,16 +223,14 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner // This is valid after MEDIA_EVENT_CLICK_LINK_HREF std::string getClickTarget() const { return mClickTarget; }; - typedef enum - { - TARGET_NONE, // empty href target string - TARGET_BLANK, // target to open link in user's preferred browser - TARGET_EXTERNAL, // target to open link in external browser - TARGET_OTHER // nonempty and unsupported target type - }ETargetType; - - // This is valid after MEDIA_EVENT_CLICK_LINK_HREF - ETargetType getClickTargetType() const { return mClickTargetType; }; + // This is valid during MEDIA_EVENT_CLICK_LINK_HREF and MEDIA_EVENT_GEOMETRY_CHANGE + std::string getClickUUID() const { return mClickUUID; }; + + // These are valid during MEDIA_EVENT_GEOMETRY_CHANGE + S32 getGeometryX() const { return mGeometryX; }; + S32 getGeometryY() const { return mGeometryY; }; + S32 getGeometryWidth() const { return mGeometryWidth; }; + S32 getGeometryHeight() const { return mGeometryHeight; }; std::string getMediaName() const { return mMediaName; }; std::string getMediaDescription() const { return mMediaDescription; }; @@ -347,6 +350,8 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner LLColor4 mBackgroundColor; + std::string mTarget; + ///////////////////////////////////////// // media_browser class std::string mNavigateURI; @@ -359,7 +364,11 @@ class LLPluginClassMedia : public LLPluginProcessParentOwner std::string mLocation; std::string mClickURL; std::string mClickTarget; - ETargetType mClickTargetType; + std::string mClickUUID; + S32 mGeometryX; + S32 mGeometryY; + S32 mGeometryWidth; + S32 mGeometryHeight; ///////////////////////////////////////// // media_time class diff --git a/indra/llplugin/llpluginclassmediaowner.h b/indra/llplugin/llpluginclassmediaowner.h index b48a5ca4ac856bfbfc56fe1d825bf4be4bee99f1..c9efff216c076292fc3237c9de81962efc563c11 100644 --- a/indra/llplugin/llpluginclassmediaowner.h +++ b/indra/llplugin/llpluginclassmediaowner.h @@ -54,6 +54,9 @@ class LLPluginClassMediaOwner MEDIA_EVENT_LOCATION_CHANGED, // browser location (URL) has changed (maybe due to internal navagation/frames/etc) MEDIA_EVENT_CLICK_LINK_HREF, // I'm not entirely sure what the semantics of these two are MEDIA_EVENT_CLICK_LINK_NOFOLLOW, + MEDIA_EVENT_CLOSE_REQUEST, // The plugin requested its window be closed (currently hooked up to javascript window.close in webkit) + MEDIA_EVENT_PICK_FILE_REQUEST, // The plugin wants the user to pick a file + MEDIA_EVENT_GEOMETRY_CHANGE, // The plugin requested its window geometry be changed (per the javascript window interface) MEDIA_EVENT_PLUGIN_FAILED_LAUNCH, // The plugin failed to launch MEDIA_EVENT_PLUGIN_FAILED // The plugin died unexpectedly diff --git a/indra/llplugin/slplugin/slplugin.cpp b/indra/llplugin/slplugin/slplugin.cpp index 7d69e1c5cdf052391bd475c44b7dc85c56531e28..516a58db8836115afd18cf276a95c0b30e445b5c 100644 --- a/indra/llplugin/slplugin/slplugin.cpp +++ b/indra/llplugin/slplugin/slplugin.cpp @@ -281,7 +281,7 @@ int main(int argc, char **argv) } // Check for a change in this process's frontmost window. - if(FrontWindow() != front_window) + if(GetFrontWindowOfClass(kAllWindowClasses, true) != front_window) { ProcessSerialNumber self = { 0, kCurrentProcess }; ProcessSerialNumber parent = { 0, kNoProcess }; @@ -307,7 +307,7 @@ int main(int argc, char **argv) } } - if((FrontWindow() != NULL) && (front_window == NULL)) + if((GetFrontWindowOfClass(kAllWindowClasses, true) != NULL) && (front_window == NULL)) { // Opening the first window @@ -319,7 +319,7 @@ int main(int argc, char **argv) if(layer_group) { - SetWindowGroup(FrontWindow(), layer_group); + SetWindowGroup(GetFrontWindowOfClass(kAllWindowClasses, true), layer_group); } if(parent_is_front_process) @@ -328,9 +328,9 @@ int main(int argc, char **argv) (void) SetFrontProcess( &self ); } - ActivateWindow(FrontWindow(), true); + ActivateWindow(GetFrontWindowOfClass(kAllWindowClasses, true), true); } - else if((FrontWindow() == NULL) && (front_window != NULL)) + else if((GetFrontWindowOfClass(kAllWindowClasses, true) == NULL) && (front_window != NULL)) { // Closing the last window @@ -350,7 +350,7 @@ int main(int argc, char **argv) window_hack_state = 2; } - front_window = FrontWindow(); + front_window = GetFrontWindowOfClass(kAllWindowClasses, true); } } diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp index 386bb987f9beb250b9e65cbfefbf13462712cd67..13008292f6ae672907dc60d2097d705390e644a4 100644 --- a/indra/llrender/llfontgl.cpp +++ b/indra/llrender/llfontgl.cpp @@ -977,37 +977,43 @@ LLFontGL::VAlign LLFontGL::vAlignFromName(const std::string& name) //static LLFontGL* LLFontGL::getFontMonospace() { - return getFont(LLFontDescriptor("Monospace","Monospace",0)); + static LLFontGL* fontp = getFont(LLFontDescriptor("Monospace","Monospace",0)); + return fontp; } //static LLFontGL* LLFontGL::getFontSansSerifSmall() { - return getFont(LLFontDescriptor("SansSerif","Small",0)); + static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Small",0)); + return fontp; } //static LLFontGL* LLFontGL::getFontSansSerif() { - return getFont(LLFontDescriptor("SansSerif","Medium",0)); + static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Medium",0)); + return fontp; } //static LLFontGL* LLFontGL::getFontSansSerifBig() { - return getFont(LLFontDescriptor("SansSerif","Large",0)); + static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Large",0)); + return fontp; } //static LLFontGL* LLFontGL::getFontSansSerifHuge() { - return getFont(LLFontDescriptor("SansSerif","Huge",0)); + static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Large",0)); + return fontp; } //static LLFontGL* LLFontGL::getFontSansSerifBold() { - return getFont(LLFontDescriptor("SansSerif","Medium",BOLD)); + static LLFontGL* fontp = getFont(LLFontDescriptor("SansSerif","Medium",BOLD)); + return fontp; } //static diff --git a/indra/llui/CMakeLists.txt b/indra/llui/CMakeLists.txt index 8e78a5fefd0eed719b999813689f4da29d6bbf3a..e98201ea63ef8e70d50b9278c76e65e695e5be1d 100644 --- a/indra/llui/CMakeLists.txt +++ b/indra/llui/CMakeLists.txt @@ -158,6 +158,7 @@ set(llui_HEADER_FILES llnotifications.h llnotificationslistener.h llnotificationsutil.h + llnotificationtemplate.h llpanel.h llprogressbar.h llradiogroup.h diff --git a/indra/llui/llaccordionctrl.cpp b/indra/llui/llaccordionctrl.cpp index f9ffaaa6462cd8a106c68f661853ff8e972da6dd..d636161bafe65513bfaf0388b706d66b3ecee5fd 100644 --- a/indra/llui/llaccordionctrl.cpp +++ b/indra/llui/llaccordionctrl.cpp @@ -83,7 +83,7 @@ LLAccordionCtrl::LLAccordionCtrl() : LLPanel() mSingleExpansion = false; mFitParent = false; - LLUICtrlFactory::getInstance()->buildPanel(this, "accordion_parent.xml"); + buildFromFile( "accordion_parent.xml"); } //--------------------------------------------------------------------------------- diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index b7da5f4a1b8794db4c1748ee1ae83cd120a7d874..179b32098a0b235c473149dc16106a8e9d1d928c 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -141,6 +141,7 @@ LLAccordionCtrlTab::LLAccordionCtrlTabHeader::LLAccordionCtrlTabHeader( textboxParams.use_ellipses = true; textboxParams.bg_visible = false; textboxParams.mouse_opaque = false; + textboxParams.parse_urls = false; mHeaderTextbox = LLUICtrlFactory::create<LLTextBox>(textboxParams); addChild(mHeaderTextbox); } @@ -735,6 +736,12 @@ S32 LLAccordionCtrlTab::notifyParent(const LLSD& info) return 1; } + + if (!getDisplayChildren()) + { + // Don't pass scrolling event further if our contents are invisible (STORM-298). + return 1; + } } return LLUICtrl::notifyParent(info); diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h index d6ac8cbc8fac67b02f57d6996c335bcc645d582a..dddaa581e64a95d86be3f271825ff073983e109b 100644 --- a/indra/llui/llaccordionctrltab.h +++ b/indra/llui/llaccordionctrltab.h @@ -85,10 +85,10 @@ class LLAccordionCtrlTab : public LLUICtrl Optional<bool> selection_enabled; - Optional<S32> padding_left; - Optional<S32> padding_right; - Optional<S32> padding_top; - Optional<S32> padding_bottom; + Optional<S32> padding_left, + padding_right, + padding_top, + padding_bottom; Params(); }; @@ -170,7 +170,7 @@ class LLAccordionCtrlTab : public LLUICtrl virtual BOOL handleScrollWheel( S32 x, S32 y, S32 clicks ); - virtual bool addChild(LLView* child, S32 tab_group); + virtual bool addChild(LLView* child, S32 tab_group = 0 ); bool isExpanded() const { return mDisplayChildren; } diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index d51276bf269f66da7d3539569dc13db709b84c03..65ef3e5f8fe4ff7d314926afa2e07449b1ed3d4a 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -114,7 +114,6 @@ LLButton::LLButton(const LLButton::Params& p) mFlashing( FALSE ), mCurGlowStrength(0.f), mNeedsHighlight(FALSE), - mMouseOver(false), mUnselectedLabel(p.label()), mSelectedLabel(p.label_selected()), mGLFont(p.font), @@ -499,11 +498,7 @@ void LLButton::onMouseEnter(S32 x, S32 y, MASK mask) LLUICtrl::onMouseEnter(x, y, mask); if (isInEnabledChain()) - { mNeedsHighlight = TRUE; - } - - mMouseOver = true; } void LLButton::onMouseLeave(S32 x, S32 y, MASK mask) @@ -511,7 +506,6 @@ void LLButton::onMouseLeave(S32 x, S32 y, MASK mask) LLUICtrl::onMouseLeave(x, y, mask); mNeedsHighlight = FALSE; - mMouseOver = true; } void LLButton::setHighlight(bool b) @@ -564,11 +558,19 @@ void LLButton::draw() pressed_by_keyboard = gKeyboard->getKeyDown(' ') || (mCommitOnReturn && gKeyboard->getKeyDown(KEY_RETURN)); } - // Unselected image assignments + bool mouse_pressed_and_over = false; + if (hasMouseCapture()) + { + S32 local_mouse_x ; + S32 local_mouse_y; + LLUI::getMousePositionLocal(this, &local_mouse_x, &local_mouse_y); + mouse_pressed_and_over = pointInView(local_mouse_x, local_mouse_y); + } + bool enabled = isInEnabledChain(); bool pressed = pressed_by_keyboard - || (hasMouseCapture() && mMouseOver) + || mouse_pressed_and_over || mForcePressedState; bool selected = getToggleState(); diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index d87ceb7c422fe1a22931ec0ada2ee4541a27f2ab..2d5fefa78c89fa4ac2b193c317d70a50a2b67a57 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -350,7 +350,6 @@ class LLButton BOOL mCommitOnReturn; BOOL mFadeWhenDisabled; bool mForcePressedState; - bool mMouseOver; LLFrameTimer mFlashingTimer; }; diff --git a/indra/llui/llcheckboxctrl.cpp b/indra/llui/llcheckboxctrl.cpp index cbc8f12472be7dc81a421998c304b858d8afeb90..bbd8db26454d862ab672088ef5363b585e2a8592 100644 --- a/indra/llui/llcheckboxctrl.cpp +++ b/indra/llui/llcheckboxctrl.cpp @@ -50,9 +50,7 @@ template class LLCheckBoxCtrl* LLView::getChild<class LLCheckBoxCtrl>( const std::string& name, BOOL recurse) const; LLCheckBoxCtrl::Params::Params() -: text_enabled_color("text_enabled_color"), - text_disabled_color("text_disabled_color"), - initial_value("initial_value", false), +: initial_value("initial_value", false), label_text("label_text"), check_button("check_button"), radio_style("radio_style") @@ -61,8 +59,8 @@ LLCheckBoxCtrl::Params::Params() LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) : LLUICtrl(p), - mTextEnabledColor(p.text_enabled_color()), - mTextDisabledColor(p.text_disabled_color()), + mTextEnabledColor(p.label_text.text_color()), + mTextDisabledColor(p.label_text.text_readonly_color()), mFont(p.font()) { mViewModel->setValue(LLSD(p.initial_value)); @@ -89,7 +87,6 @@ LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p) { tbparams.font(p.font); } - tbparams.text_color( p.enabled() ? p.text_enabled_color() : p.text_disabled_color() ); mLabel = LLUICtrlFactory::create<LLTextBox> (tbparams); addChild(mLabel); diff --git a/indra/llui/llcheckboxctrl.h b/indra/llui/llcheckboxctrl.h index 01470882804bf1a77bcdc1a3abac573d9a64faae..67d8091a97f1cc66290ee8c6d612ae2f2c9785e0 100644 --- a/indra/llui/llcheckboxctrl.h +++ b/indra/llui/llcheckboxctrl.h @@ -52,8 +52,6 @@ class LLCheckBoxCtrl struct Params : public LLInitParam::Block<Params, LLUICtrl::Params> { - Optional<LLUIColor> text_enabled_color; - Optional<LLUIColor> text_disabled_color; Optional<bool> initial_value; // override LLUICtrl initial_value Optional<LLTextBox::Params> label_text; diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index 910bab9a97f2bcd268ed3bcb4a225e212d2a610f..edd2cd340b222ff58aff7108a38605f1483f0464 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -139,8 +139,8 @@ LLComboBox::LLComboBox(const LLComboBox::Params& p) // Grab the mouse-up event and make sure the button state is correct mList->setMouseUpCallback(boost::bind(&LLComboBox::onListMouseUp, this)); - for (LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items().begin(); - it != p.items().end(); + for (LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items.begin(); + it != p.items.end(); ++it) { LLScrollListItem::Params item_params = *it; diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index c0942cf3c75341552851b72e993080be56641a39..b75807041934acd4271669880501a188d06509c3 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -36,6 +36,7 @@ #include "lluictrlfactory.h" #include "llbutton.h" #include "llcheckboxctrl.h" +#include "lldir.h" #include "lldraghandle.h" #include "llfloaterreg.h" #include "llfocusmgr.h" @@ -231,7 +232,8 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mTornOff(false), mHasBeenDraggedWhileMinimized(FALSE), mPreviousMinimizedBottom(0), - mPreviousMinimizedLeft(0) + mPreviousMinimizedLeft(0), + mMinimizeSignal(NULL) // mNotificationContext(NULL) { mHandle.bind(this); @@ -493,6 +495,8 @@ LLFloater::~LLFloater() setVisible(false); // We're not visible if we're destroyed storeVisibilityControl(); storeDockStateControl(); + + delete mMinimizeSignal; } void LLFloater::storeRectControl() @@ -997,6 +1001,11 @@ void LLFloater::setMinimized(BOOL minimize) if (minimize == mMinimized) return; + if(mMinimizeSignal) + { + (*mMinimizeSignal)(this, LLSD(minimize)); + } + if (minimize) { // minimized flag should be turned on before release focus @@ -2390,7 +2399,9 @@ void LLFloaterView::closeAllChildren(bool app_quitting) // Attempt to close floater. This will cause the "do you want to save" // dialogs to appear. - if (floaterp->canClose() && !floaterp->isDead()) + // Skip invisible floaters if we're not quitting (STORM-192). + if (floaterp->canClose() && !floaterp->isDead() && + (app_quitting || floaterp->getVisible())) { floaterp->closeFloater(app_quitting); } @@ -2808,12 +2819,19 @@ void LLFloater::initFromParams(const LLFloater::Params& p) } } +boost::signals2::connection LLFloater::setMinimizeCallback( const commit_signal_t::slot_type& cb ) +{ + if (!mMinimizeSignal) mMinimizeSignal = new commit_signal_t(); + return mMinimizeSignal->connect(cb); +} + LLFastTimer::DeclareTimer POST_BUILD("Floater Post Build"); bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node) { Params params(LLUICtrlFactory::getDefaultParams<LLFloater>()); - LLXUIParser::instance().readXUI(node, params, filename); // *TODO: Error checking + LLXUIParser parser; + parser.readXUI(node, params, filename); // *TODO: Error checking if (output_node) { @@ -2821,8 +2839,7 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::str setupParamsForExport(output_params, parent); Params default_params(LLUICtrlFactory::getDefaultParams<LLFloater>()); output_node->setName(node->getName()->mString); - LLXUIParser::instance().writeXUI( - output_node, output_params, &default_params); + parser.writeXUI(output_node, output_params, &default_params); } // Default floater position to top-left corner of screen @@ -2917,3 +2934,64 @@ bool LLFloater::isVisible(const LLFloater* floater) { return floater && floater->getVisible(); } + +static LLFastTimer::DeclareTimer FTM_BUILD_FLOATERS("Build Floaters"); + +bool LLFloater::buildFromFile(const std::string& filename, LLXMLNodePtr output_node) +{ + LLFastTimer timer(FTM_BUILD_FLOATERS); + LLXMLNodePtr 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 false; + } + } + else if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) + { + llwarns << "Couldn't parse floater from: " << LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; + return false; + } + + // root must be called floater + if( !(root->hasName("floater") || root->hasName("multi_floater")) ) + { + llwarns << "Root node should be named floater in: " << filename << llendl; + return false; + } + + bool res = true; + + lldebugs << "Building floater " << filename << llendl; + LLUICtrlFactory::instance().pushFileName(filename); + { + if (!getFactoryMap().empty()) + { + LLPanel::sFactoryStack.push_front(&getFactoryMap()); + } + + // for local registry callbacks; define in constructor, referenced in XUI or postBuild + getCommitCallbackRegistrar().pushScope(); + getEnableCallbackRegistrar().pushScope(); + + res = initFloaterXML(root, getParent(), filename, output_node); + + setXMLFilename(filename); + + getCommitCallbackRegistrar().popScope(); + getEnableCallbackRegistrar().popScope(); + + if (!getFactoryMap().empty()) + { + LLPanel::sFactoryStack.pop_front(); + } + } + LLUICtrlFactory::instance().popFileName(); + + return res; +} diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 5ecf515cf9268965c50349bea2c635faeee80ff2..32d03f9f8387f026f18a51dbf8f377f5f72646a0 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -141,6 +141,9 @@ friend class LLMultiFloater; // Don't export top/left for rect, only height/width static void setupParamsForExport(Params& p, LLView* parent); + bool buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL); + + boost::signals2::connection setMinimizeCallback( const commit_signal_t::slot_type& cb ); void initFromParams(const LLFloater::Params& p); bool initFloaterXML(LLXMLNodePtr node, LLView *parent, const std::string& filename, LLXMLNodePtr output_node = NULL); @@ -347,6 +350,8 @@ friend class LLMultiFloater; // Public so external views or floaters can watch for this floater closing commit_signal_t mCloseSignal; + commit_signal_t* mMinimizeSignal; + protected: std::string mRectControl; std::string mVisibilityControl; diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 4720ebb82255b3411fe16229b7aecf83da4eff1b..4677d535db3698eced8a32df4c944d1dfb6394ba 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -121,7 +121,7 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key) res = build_func(key); - bool success = LLUICtrlFactory::getInstance()->buildFloater(res, xui_file, NULL); + bool success = res->buildFromFile(xui_file, NULL); if (!success) { llwarns << "Failed to build floater type: '" << name << "'." << llendl; diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp index 1f16d12adda1e5eb177439df6dd615e87fd5fb30..43e5f6b051d4f344c7e65f91a2fabc6bc67ab4dc 100644 --- a/indra/llui/llfocusmgr.cpp +++ b/indra/llui/llfocusmgr.cpp @@ -315,6 +315,20 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f } } +bool LLFocusMgr::keyboardFocusHasAccelerators() const +{ + LLView* focus_view = dynamic_cast<LLView*>(mKeyboardFocus); + while( focus_view ) + { + if(focus_view->hasAccelerators()) + { + return true; + } + + focus_view = focus_view->getParent(); + } + return false; +} void LLFocusMgr::setMouseCapture( LLMouseHandler* new_captor ) { diff --git a/indra/llui/llfocusmgr.h b/indra/llui/llfocusmgr.h index eef82a3b5ab4bc706eebf7c3b7a5a56b21404a11..22c1895075e70b8a5e1f5ee9d94841c79b507064 100644 --- a/indra/llui/llfocusmgr.h +++ b/indra/llui/llfocusmgr.h @@ -118,6 +118,8 @@ class LLFocusMgr void unlockFocus(); BOOL focusLocked() const { return mLockedView != NULL; } + bool keyboardFocusHasAccelerators() const; + private: LLUICtrl* mLockedView; diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 0ff7557ead620c4cf002eeeace15ff68d02a5f23..940c7e7e1863837320166e3bbf9fc7b31cc3015a 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -35,95 +35,66 @@ #include "llresizebar.h" #include "llcriticaldamp.h" -static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack", &LLLayoutStack::fromXML); - +static LLDefaultChildRegistry::Register<LLLayoutStack> register_layout_stack("layout_stack"); +static LLLayoutStack::LayoutStackRegistry::Register<LLLayoutPanel> register_layout_panel("layout_panel"); // -// LLLayoutStack +// LLLayoutPanel // -struct LLLayoutStack::LayoutPanel -{ - LayoutPanel(LLPanel* panelp, ELayoutOrientation orientation, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize) : mPanel(panelp), - mMinWidth(min_width), - mMinHeight(min_height), - mMaxWidth(max_width), - mMaxHeight(max_height), - mAutoResize(auto_resize), - mUserResize(user_resize), - mOrientation(orientation), +LLLayoutPanel::LLLayoutPanel(const Params& p) +: LLPanel(p), + mMinDim(p.min_dim), + mMaxDim(p.max_dim), + mAutoResize(p.auto_resize), + mUserResize(p.user_resize), mCollapsed(FALSE), mCollapseAmt(0.f), mVisibleAmt(1.f), // default to fully visible mResizeBar(NULL) { - LLResizeBar::Side side = (orientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; - LLRect resize_bar_rect = panelp->getRect(); - - S32 min_dim; - if (orientation == HORIZONTAL) + // panels initialized as hidden should not start out partially visible + if (!getVisible()) { - min_dim = mMinHeight; + mVisibleAmt = 0.f; } - else - { - min_dim = mMinWidth; - } - LLResizeBar::Params p; - p.name("resize"); - p.resizing_view(mPanel); - p.min_size(min_dim); - p.side(side); - p.snapping_enabled(false); - mResizeBar = LLUICtrlFactory::create<LLResizeBar>(p); - // panels initialized as hidden should not start out partially visible - if (!mPanel->getVisible()) - { - mVisibleAmt = 0.f; } + +void LLLayoutPanel::initFromParams(const Params& p) + { + LLPanel::initFromParams(p); + setFollowsNone(); } - ~LayoutPanel() + +LLLayoutPanel::~LLLayoutPanel() { // probably not necessary, but... delete mResizeBar; mResizeBar = NULL; } - F32 getCollapseFactor() +F32 LLLayoutPanel::getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation) { - if (mOrientation == HORIZONTAL) + if (orientation == LLLayoutStack::HORIZONTAL) { F32 collapse_amt = - clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)mMinWidth / (F32)llmax(1, mPanel->getRect().getWidth())); + clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, (F32)mMinDim / (F32)llmax(1, getRect().getWidth())); 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()))); + clamp_rescale(mCollapseAmt, 0.f, 1.f, 1.f, llmin(1.f, (F32)mMinDim / (F32)llmax(1, getRect().getHeight()))); return mVisibleAmt * collapse_amt; } } - LLPanel* mPanel; - S32 mMinWidth; - S32 mMinHeight; - - // mMaxWidth & mMaxHeight are added to make configurable max width of the nearby chat bar. EXT-5589 - // they are not processed by LLLayoutStack but they can be if necessary - S32 mMaxWidth; - S32 mMaxHeight; - BOOL mAutoResize; - BOOL mUserResize; - BOOL mCollapsed; - LLResizeBar* mResizeBar; - ELayoutOrientation mOrientation; - F32 mVisibleAmt; - F32 mCollapseAmt; -}; +// +// LLLayoutStack +// LLLayoutStack::Params::Params() -: orientation("orientation", std::string("vertical")), +: orientation("orientation"), animate("animate", true), clip("clip", true), border_size("border_size", LLCachedControl<S32>(*LLUI::sSettingGroups["config"], "UIResizeBarHeight", 0)) @@ -157,18 +128,18 @@ void LLLayoutStack::draw() for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { // clip to layout rectangle, not bounding rectangle - LLRect clip_rect = (*panel_it)->mPanel->getRect(); + LLRect clip_rect = (*panel_it)->getRect(); // scale clipping rectangle by visible amount if (mOrientation == HORIZONTAL) { - clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor()); + clip_rect.mRight = clip_rect.mLeft + llround((F32)clip_rect.getWidth() * (*panel_it)->getCollapseFactor(mOrientation)); } else { - clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor()); + clip_rect.mBottom = clip_rect.mTop - llround((F32)clip_rect.getHeight() * (*panel_it)->getCollapseFactor(mOrientation)); } - LLPanel* panelp = (*panel_it)->mPanel; + LLPanel* panelp = (*panel_it); LLLocalClipRect clip(clip_rect, mClip); // only force drawing invisible children if visible amount is non-zero @@ -179,7 +150,7 @@ void LLLayoutStack::draw() void LLLayoutStack::removeChild(LLView* view) { - LayoutPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view)); + LLLayoutPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view)); if (embedded_panelp) { @@ -200,149 +171,16 @@ BOOL LLLayoutStack::postBuild() return TRUE; } -static void get_attribute_s32_and_write(LLXMLNodePtr node, - const char* name, - S32 *value, - S32 default_value, - LLXMLNodePtr output_child) -{ - BOOL has_attr = node->getAttributeS32(name, *value); - if (has_attr && *value != default_value && output_child) - { - // create an attribute child node - LLXMLNodePtr child_attr = output_child->createChild(name, TRUE); - child_attr->setIntValue(*value); - } -} - -static void get_attribute_bool_and_write(LLXMLNodePtr node, - const char* name, - BOOL *value, - BOOL default_value, - LLXMLNodePtr output_child) -{ - BOOL has_attr = node->getAttributeBOOL(name, *value); - if (has_attr && *value != default_value && output_child) - { - LLXMLNodePtr child_attr = output_child->createChild(name, TRUE); - child_attr->setBoolValue(*value); - } -} -//static -LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node) -{ - LLLayoutStack::Params p(LLUICtrlFactory::getDefaultParams<LLLayoutStack>()); - LLXUIParser::instance().readXUI(node, p, LLUICtrlFactory::getInstance()->getCurFileName()); - - // 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); - setupParamsForExport(output_params, parent); - LLLayoutStack::Params default_params(LLUICtrlFactory::getDefaultParams<LLLayoutStack>()); - output_node->setName(node->getName()->mString); - LLXUIParser::instance().writeXUI( - output_node, output_params, &default_params); - } - - p.from_xui = true; - applyXUILayout(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; - const S32 DEFAULT_MIN_HEIGHT = 0; - const S32 DEFAULT_MAX_WIDTH = S32_MAX; - const S32 DEFAULT_MAX_HEIGHT = S32_MAX; - const BOOL DEFAULT_AUTO_RESIZE = TRUE; - - S32 min_width = DEFAULT_MIN_WIDTH; - S32 min_height = DEFAULT_MIN_HEIGHT; - S32 max_width = DEFAULT_MAX_WIDTH; - S32 max_height = DEFAULT_MAX_HEIGHT; - BOOL auto_resize = DEFAULT_AUTO_RESIZE; - - LLXMLNodePtr output_child; - if (output_node) +bool LLLayoutStack::addChild(LLView* child, S32 tab_group) { - output_child = output_node->createChild("", FALSE); - } - - // Layout stack allows child nodes to acquire additional attributes, - // such as "min_width" in: <button label="Foo" min_width="100"/> - // If these attributes exist and have non-default values, write them - // to the output node. - get_attribute_s32_and_write(child_node, "min_width", &min_width, - DEFAULT_MIN_WIDTH, output_child); - get_attribute_s32_and_write(child_node, "min_height", &min_height, - DEFAULT_MIN_HEIGHT, output_child); - get_attribute_s32_and_write(child_node, "max_width", &max_width, - DEFAULT_MAX_WIDTH, output_child); - get_attribute_s32_and_write(child_node, "max_height", &max_height, - DEFAULT_MAX_HEIGHT, output_child); - get_attribute_bool_and_write(child_node, "auto_resize", &auto_resize, - DEFAULT_AUTO_RESIZE, output_child); - - if (child_node->hasName("layout_panel")) - { - BOOL user_resize = TRUE; - get_attribute_bool_and_write(child_node, "user_resize", &user_resize, - TRUE, output_child); - LLPanel* panelp = (LLPanel*)LLPanel::fromXML(child_node, layout_stackp, output_child); + LLLayoutPanel* panelp = dynamic_cast<LLLayoutPanel*>(child); if (panelp) { - panelp->setFollowsNone(); - layout_stackp->addPanel(panelp, min_width, min_height, max_width, max_height, auto_resize, user_resize); + mPanels.push_back(panelp); } + return LLView::addChild(child, tab_group); } - else - { - BOOL user_resize = FALSE; - get_attribute_bool_and_write(child_node, "user_resize", &user_resize, - FALSE, output_child); - - LLPanel::Params p; - p.mouse_opaque(false); - LLPanel* panelp = LLUICtrlFactory::create<LLPanel>(p); - LLView* new_child = LLUICtrlFactory::getInstance()->createFromXML(child_node, panelp, LLStringUtil::null, LLPanel::child_registry_t::instance(), output_child); - if (new_child) - { - // put child in new embedded panel - layout_stackp->addPanel(panelp, min_width, min_height, max_width, max_height, auto_resize, user_resize); - // resize panel to contain widget and move widget to be contained in panel - panelp->setRect(new_child->getRect()); - new_child->setOrigin(0, 0); - } - else - { - panelp->die(); - } - } - - if (output_child && !output_child->mChildren && output_child->mAttributes.empty() && output_child->getValue().empty()) - { - output_node->deleteChild(output_child); - } - } - - if (!layout_stackp->postBuild()) - { - delete layout_stackp; - return NULL; - } - return layout_stackp; -} S32 LLLayoutStack::getDefaultHeight(S32 cur_height) { @@ -370,8 +208,8 @@ S32 LLLayoutStack::getDefaultWidth(S32 cur_width) void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, bool move_to_front) { - LayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move); - LayoutPanel* embedded_target_panel = move_to_front ? *mPanels.begin() : findEmbeddedPanel(target_panel); + LLLayoutPanel* embedded_panel_to_move = findEmbeddedPanel(panel_to_move); + LLLayoutPanel* embedded_target_panel = move_to_front ? *mPanels.begin() : findEmbeddedPanel(target_panel); if (!embedded_panel_to_move || !embedded_target_panel || embedded_panel_to_move == embedded_target_panel) { @@ -384,34 +222,14 @@ void LLLayoutStack::movePanel(LLPanel* panel_to_move, LLPanel* target_panel, boo mPanels.insert(it, embedded_panel_to_move); } -void LLLayoutStack::addPanel(LLPanel* panel, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize, EAnimate animate, S32 index) +void LLLayoutStack::addPanel(LLLayoutPanel* panel, EAnimate animate) { - // panel starts off invisible (collapsed) - if (animate == ANIMATE) - { - panel->setVisible(FALSE); - } - LayoutPanel* embedded_panel = new LayoutPanel(panel, mOrientation, min_width, min_height, max_width, max_height, auto_resize, user_resize); - - mPanels.insert(mPanels.begin() + llclamp(index, 0, (S32)mPanels.size()), embedded_panel); - - if (panel->getParent() != this) - { - addChild(panel); - } - addChild(embedded_panel->mResizeBar); + addChild(panel); - // bring all resize bars to the front so that they are clickable even over the panels - // with a bit of overlap - for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) - { - LLResizeBar* resize_barp = (*panel_it)->mResizeBar; - sendChildToFront(resize_barp); - } - - // start expanding panel animation + // panel starts off invisible (collapsed) if (animate == ANIMATE) { + panel->mVisibleAmt = 0.f; panel->setVisible(TRUE); } } @@ -423,7 +241,7 @@ void LLLayoutStack::removePanel(LLPanel* panel) void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed) { - LayoutPanel* panel_container = findEmbeddedPanel(panel); + LLLayoutPanel* panel_container = findEmbeddedPanel(panel); if (!panel_container) return; panel_container->mCollapsed = collapsed; @@ -431,7 +249,7 @@ void LLLayoutStack::collapsePanel(LLPanel* panel, BOOL collapsed) void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL auto_resize) { - LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); if (panel) { @@ -441,7 +259,7 @@ void LLLayoutStack::updatePanelAutoResize(const std::string& panel_name, BOOL au void LLLayoutStack::setPanelUserResize(const std::string& panel_name, BOOL user_resize) { - LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); if (panel) { @@ -449,27 +267,25 @@ void LLLayoutStack::setPanelUserResize(const std::string& panel_name, BOOL user_ } } -bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp) +bool LLLayoutStack::getPanelMinSize(const std::string& panel_name, S32* min_dimp) { - LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); if (panel) { - if (min_widthp) *min_widthp = panel->mMinWidth; - if (min_heightp) *min_heightp = panel->mMinHeight; + if (min_dimp) *min_dimp = panel->mMinDim; } return NULL != panel; } -bool LLLayoutStack::getPanelMaxSize(const std::string& panel_name, S32* max_widthp, S32* max_heightp) +bool LLLayoutStack::getPanelMaxSize(const std::string& panel_name, S32* max_dimp) { - LayoutPanel* panel = findEmbeddedPanelByName(panel_name); + LLLayoutPanel* panel = findEmbeddedPanelByName(panel_name); if (panel) { - if (max_widthp) *max_widthp = panel->mMaxWidth; - if (max_heightp) *max_heightp = panel->mMaxHeight; + if (max_dimp) *max_dimp = panel->mMaxDim; } return NULL != panel; @@ -481,6 +297,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) LLFastTimer ft(FTM_UPDATE_LAYOUT); static LLUICachedControl<S32> resize_bar_overlap ("UIResizeBarOverlap", 0); calcMinExtents(); + createResizeBars(); // calculate current extents S32 total_width = 0; @@ -492,7 +309,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) e_panel_list_t::iterator panel_it; for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { - LLPanel* panelp = (*panel_it)->mPanel; + LLPanel* panelp = (*panel_it); if (panelp->getVisible()) { if (mAnimate) @@ -542,11 +359,11 @@ void LLLayoutStack::updateLayout(BOOL force_resize) if (mOrientation == HORIZONTAL) { // enforce minimize size constraint by default - if (panelp->getRect().getWidth() < (*panel_it)->mMinWidth) + if (panelp->getRect().getWidth() < (*panel_it)->mMinDim) { - panelp->reshape((*panel_it)->mMinWidth, panelp->getRect().getHeight()); + panelp->reshape((*panel_it)->mMinDim, panelp->getRect().getHeight()); } - total_width += llround(panelp->getRect().getWidth() * (*panel_it)->getCollapseFactor()); + total_width += llround(panelp->getRect().getWidth() * (*panel_it)->getCollapseFactor(mOrientation)); // want n-1 panel gaps for n panels if (panel_it != mPanels.begin()) { @@ -556,11 +373,11 @@ void LLLayoutStack::updateLayout(BOOL force_resize) else //VERTICAL { // enforce minimize size constraint by default - if (panelp->getRect().getHeight() < (*panel_it)->mMinHeight) + if (panelp->getRect().getHeight() < (*panel_it)->mMinDim) { - panelp->reshape(panelp->getRect().getWidth(), (*panel_it)->mMinHeight); + panelp->reshape(panelp->getRect().getWidth(), (*panel_it)->mMinDim); } - total_height += llround(panelp->getRect().getHeight() * (*panel_it)->getCollapseFactor()); + total_height += llround(panelp->getRect().getHeight() * (*panel_it)->getCollapseFactor(mOrientation)); if (panel_it != mPanels.begin()) { total_height += mPanelSpacing; @@ -574,7 +391,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { // panels that are not fully visible do not count towards shrink headroom - if ((*panel_it)->getCollapseFactor() < 1.f) + if ((*panel_it)->getCollapseFactor(mOrientation) < 1.f) { continue; } @@ -587,11 +404,11 @@ void LLLayoutStack::updateLayout(BOOL force_resize) { if (mOrientation == HORIZONTAL) { - shrink_headroom_total += (*panel_it)->mPanel->getRect().getWidth() - (*panel_it)->mMinWidth; + shrink_headroom_total += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; } else //VERTICAL { - shrink_headroom_total += (*panel_it)->mPanel->getRect().getHeight() - (*panel_it)->mMinHeight; + shrink_headroom_total += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; } } else @@ -599,13 +416,13 @@ void LLLayoutStack::updateLayout(BOOL force_resize) num_resizable_panels++; if (mOrientation == HORIZONTAL) { - shrink_headroom_available += (*panel_it)->mPanel->getRect().getWidth() - (*panel_it)->mMinWidth; - shrink_headroom_total += (*panel_it)->mPanel->getRect().getWidth() - (*panel_it)->mMinWidth; + shrink_headroom_available += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; + shrink_headroom_total += (*panel_it)->getRect().getWidth() - (*panel_it)->mMinDim; } else //VERTICAL { - shrink_headroom_available += (*panel_it)->mPanel->getRect().getHeight() - (*panel_it)->mMinHeight; - shrink_headroom_total += (*panel_it)->mPanel->getRect().getHeight() - (*panel_it)->mMinHeight; + shrink_headroom_available += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; + shrink_headroom_total += (*panel_it)->getRect().getHeight() - (*panel_it)->mMinDim; } } } @@ -628,17 +445,25 @@ void LLLayoutStack::updateLayout(BOOL force_resize) for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { - LLPanel* panelp = (*panel_it)->mPanel; + LLPanel* panelp = (*panel_it); S32 cur_width = panelp->getRect().getWidth(); S32 cur_height = panelp->getRect().getHeight(); - S32 new_width = llmax((*panel_it)->mMinWidth, cur_width); - S32 new_height = llmax((*panel_it)->mMinHeight, cur_height); + S32 new_width = cur_width; + S32 new_height = cur_height; + if (mOrientation == HORIZONTAL) + { + new_width = llmax((*panel_it)->mMinDim, new_width); + } + else + { + new_height = llmax((*panel_it)->mMinDim, new_height); + } S32 delta_size = 0; // if panel can automatically resize (not animating, and resize flag set)... - if ((*panel_it)->getCollapseFactor() == 1.f + if ((*panel_it)->getCollapseFactor(mOrientation) == 1.f && (force_resize || (*panel_it)->mAutoResize) && !(*panel_it)->mResizeBar->hasMouseCapture()) { @@ -649,8 +474,8 @@ void LLLayoutStack::updateLayout(BOOL force_resize) { // shrink proportionally to amount over minimum // so we can do this in one pass - delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - (*panel_it)->mMinWidth) / (F32)shrink_headroom_available)) : 0; - shrink_headroom_available -= (cur_width - (*panel_it)->mMinWidth); + delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_width - (*panel_it)->mMinDim) / (F32)shrink_headroom_available)) : 0; + shrink_headroom_available -= (cur_width - (*panel_it)->mMinDim); } else { @@ -659,7 +484,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) num_resizable_panels--; } pixels_to_distribute -= delta_size; - new_width = llmax((*panel_it)->mMinWidth, cur_width + delta_size); + new_width = llmax((*panel_it)->mMinDim, cur_width + delta_size); } else { @@ -672,8 +497,8 @@ void LLLayoutStack::updateLayout(BOOL force_resize) { // shrink proportionally to amount over minimum // so we can do this in one pass - delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - (*panel_it)->mMinHeight) / (F32)shrink_headroom_available)) : 0; - shrink_headroom_available -= (cur_height - (*panel_it)->mMinHeight); + delta_size = (shrink_headroom_available > 0) ? llround((F32)pixels_to_distribute * ((F32)(cur_height - (*panel_it)->mMinDim) / (F32)shrink_headroom_available)) : 0; + shrink_headroom_available -= (cur_height - (*panel_it)->mMinDim); } else { @@ -681,7 +506,7 @@ void LLLayoutStack::updateLayout(BOOL force_resize) num_resizable_panels--; } pixels_to_distribute -= delta_size; - new_height = llmax((*panel_it)->mMinHeight, cur_height + delta_size); + new_height = llmax((*panel_it)->mMinDim, cur_height + delta_size); } else { @@ -722,11 +547,11 @@ void LLLayoutStack::updateLayout(BOOL force_resize) if (mOrientation == HORIZONTAL) { - cur_x += llround(new_width * (*panel_it)->getCollapseFactor()) + mPanelSpacing; + cur_x += llround(new_width * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing; } else //VERTICAL { - cur_y -= llround(new_height * (*panel_it)->getCollapseFactor()) + mPanelSpacing; + cur_y -= llround(new_height * (*panel_it)->getCollapseFactor(mOrientation)) + mPanelSpacing; } } @@ -734,19 +559,19 @@ void LLLayoutStack::updateLayout(BOOL force_resize) LLResizeBar* last_resize_bar = NULL; for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { - LLPanel* panelp = (*panel_it)->mPanel; + LLPanel* panelp = (*panel_it); if (mOrientation == HORIZONTAL) { (*panel_it)->mResizeBar->setResizeLimits( - (*panel_it)->mMinWidth, - (*panel_it)->mMinWidth + shrink_headroom_total); + (*panel_it)->mMinDim, + (*panel_it)->mMinDim + shrink_headroom_total); } else //VERTICAL { (*panel_it)->mResizeBar->setResizeLimits( - (*panel_it)->mMinHeight, - (*panel_it)->mMinHeight + shrink_headroom_total); + (*panel_it)->mMinDim, + (*panel_it)->mMinDim + shrink_headroom_total); } // toggle resize bars based on panel visibility, resizability, etc @@ -782,14 +607,14 @@ void LLLayoutStack::updateLayout(BOOL force_resize) } // end LLLayoutStack::updateLayout -LLLayoutStack::LayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const +LLLayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) const { if (!panelp) return NULL; e_panel_list_t::const_iterator panel_it; for (panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { - if ((*panel_it)->mPanel == panelp) + if ((*panel_it) == panelp) { return *panel_it; } @@ -797,15 +622,15 @@ LLLayoutStack::LayoutPanel* LLLayoutStack::findEmbeddedPanel(LLPanel* panelp) co return NULL; } -LLLayoutStack::LayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const +LLLayoutPanel* LLLayoutStack::findEmbeddedPanelByName(const std::string& name) const { - LayoutPanel* result = NULL; + LLLayoutPanel* result = NULL; for (e_panel_list_t::const_iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) { - LayoutPanel* p = *panel_it; + LLLayoutPanel* p = *panel_it; - if (p->mPanel->getName() == name) + if (p->getName() == name) { result = p; break; @@ -826,9 +651,7 @@ void LLLayoutStack::calcMinExtents() { if (mOrientation == HORIZONTAL) { - mMinHeight = llmax( mMinHeight, - (*panel_it)->mMinHeight); - mMinWidth += (*panel_it)->mMinWidth; + mMinWidth += (*panel_it)->mMinDim; if (panel_it != mPanels.begin()) { mMinWidth += mPanelSpacing; @@ -836,9 +659,7 @@ void LLLayoutStack::calcMinExtents() } else //VERTICAL { - mMinWidth = llmax( mMinWidth, - (*panel_it)->mMinWidth); - mMinHeight += (*panel_it)->mMinHeight; + mMinHeight += (*panel_it)->mMinDim; if (panel_it != mPanels.begin()) { mMinHeight += mPanelSpacing; @@ -847,6 +668,37 @@ void LLLayoutStack::calcMinExtents() } } +void LLLayoutStack::createResizeBars() +{ + for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) + { + LLLayoutPanel* lp = (*panel_it); + if (lp->mResizeBar == NULL) + { + LLResizeBar::Side side = (mOrientation == HORIZONTAL) ? LLResizeBar::RIGHT : LLResizeBar::BOTTOM; + LLRect resize_bar_rect = getRect(); + + LLResizeBar::Params resize_params; + resize_params.name("resize"); + resize_params.resizing_view(lp); + resize_params.min_size(lp->mMinDim); + resize_params.side(side); + resize_params.snapping_enabled(false); + LLResizeBar* resize_bar = LLUICtrlFactory::create<LLResizeBar>(resize_params); + lp->mResizeBar = resize_bar; + LLView::addChild(resize_bar, 0); + + // bring all resize bars to the front so that they are clickable even over the panels + // with a bit of overlap + for (e_panel_list_t::iterator panel_it = mPanels.begin(); panel_it != mPanels.end(); ++panel_it) + { + LLResizeBar* resize_barp = (*panel_it)->mResizeBar; + sendChildToFront(resize_barp); + } + } + } +} + // update layout stack animations, etc. once per frame // NOTE: we use this to size world view based on animating UI, *before* we draw the UI // we might still need to call updateLayout during UI draw phase, in case UI elements diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 6fcc8e2ac34a6c092b6155f3ed47fc41f447f44a..e19ef403eff7594a9a37bf1835624021d4993bf0 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -28,16 +28,21 @@ #ifndef LL_LLLAYOUTSTACK_H #define LL_LLLAYOUTSTACK_H -#include "llview.h" +#include "llpanel.h" class LLPanel; +class LLLayoutPanel; + class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> { public: + struct LayoutStackRegistry : public LLChildRegistry<LayoutStackRegistry> + {}; + struct Params : public LLInitParam::Block<Params, LLView::Params> { - Optional<std::string> orientation; + Mandatory<std::string> orientation; Optional<S32> border_size; Optional<bool> animate, clip; @@ -45,6 +50,8 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> Params(); }; + typedef LayoutStackRegistry child_registry_t; + typedef enum e_layout_orientation { HORIZONTAL, @@ -56,6 +63,7 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> /*virtual*/ void draw(); /*virtual*/ void removeChild(LLView*); /*virtual*/ BOOL postBuild(); + /*virtual*/ bool addChild(LLView* child, S32 tab_group = 0); static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); @@ -68,7 +76,7 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> ANIMATE } EAnimate; - void addPanel(LLPanel* panel, S32 min_width, S32 min_height, S32 max_width, S32 max_height, BOOL auto_resize, BOOL user_resize, EAnimate animate = NO_ANIMATE, S32 index = S32_MAX); + void addPanel(LLLayoutPanel* panel, EAnimate animate = NO_ANIMATE); void removePanel(LLPanel* panel); void collapsePanel(LLPanel* panel, BOOL collapsed = TRUE); S32 getNumPanels() { return mPanels.size(); } @@ -82,20 +90,18 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> void setPanelUserResize(const std::string& panel_name, BOOL user_resize); /** - * Gets minimal width and/or height of the specified by name panel. + * Gets minimal dimension along layout_stack axis of the specified by name panel. * - * If it is necessary to get only the one dimension pass NULL for another one. * @returns true if specified by panel_name internal panel exists, false otherwise. */ - bool getPanelMinSize(const std::string& panel_name, S32* min_widthp, S32* min_heightp); + bool getPanelMinSize(const std::string& panel_name, S32* min_dimp); /** - * Gets maximal width and/or height of the specified by name panel. + * Gets maximal dimension along layout_stack axis of the specified by name panel. * - * If it is necessary to get only the one dimension pass NULL for another one. * @returns true if specified by panel_name internal panel exists, false otherwise. */ - bool getPanelMaxSize(const std::string& panel_name, S32* max_width, S32* max_height); + bool getPanelMaxSize(const std::string& panel_name, S32* max_dim); void updateLayout(BOOL force_resize = FALSE); @@ -110,19 +116,18 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> friend class LLUICtrlFactory; private: - struct LayoutPanel; - + void createResizeBars(); void calcMinExtents(); S32 getDefaultHeight(S32 cur_height); S32 getDefaultWidth(S32 cur_width); const ELayoutOrientation mOrientation; - typedef std::vector<LayoutPanel*> e_panel_list_t; + typedef std::vector<LLLayoutPanel*> e_panel_list_t; e_panel_list_t mPanels; - LayoutPanel* findEmbeddedPanel(LLPanel* panelp) const; - LayoutPanel* findEmbeddedPanelByName(const std::string& name) const; + LLLayoutPanel* findEmbeddedPanel(LLPanel* panelp) const; + LLLayoutPanel* findEmbeddedPanelByName(const std::string& name) const; S32 mMinWidth; // calculated by calcMinExtents S32 mMinHeight; // calculated by calcMinExtents @@ -134,4 +139,49 @@ class LLLayoutStack : public LLView, public LLInstanceTracker<LLLayoutStack> bool mClip; }; // end class LLLayoutStack +class LLLayoutPanel : public LLPanel +{ +friend class LLLayoutStack; +friend class LLUICtrlFactory; +public: + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Optional<S32> min_dim, + max_dim; + Optional<bool> user_resize, + auto_resize; + + Params() + : min_dim("min_dim", 0), + max_dim("max_dim", 0), + user_resize("user_resize", true), + auto_resize("auto_resize", true) + { + addSynonym(min_dim, "min_width"); + addSynonym(min_dim, "min_height"); + addSynonym(max_dim, "max_width"); + addSynonym(max_dim, "max_height"); + } + }; + + ~LLLayoutPanel(); + + void initFromParams(const Params& p); +protected: + LLLayoutPanel(const Params& p) ; + + + F32 getCollapseFactor(LLLayoutStack::ELayoutOrientation orientation); + + S32 mMinDim; + S32 mMaxDim; + BOOL mAutoResize; + BOOL mUserResize; + BOOL mCollapsed; + class LLResizeBar* mResizeBar; + F32 mVisibleAmt; + F32 mCollapseAmt; +}; + + #endif diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 2759167d047bb266ea9f278be160c6932d13bb30..a1fc977ce1b1095cb6410624a274f690c400e08b 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -1271,7 +1271,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask) if( mCurrentHistoryLine > mLineHistory.begin() ) { mText.assign( *(--mCurrentHistoryLine) ); - setCursor(llmin((S32)mText.length(), getCursor())); + setCursorToEnd(); } else { @@ -1288,7 +1288,7 @@ BOOL LLLineEditor::handleSpecialKey(KEY key, MASK mask) if( !mLineHistory.empty() && mCurrentHistoryLine < mLineHistory.end() - 1 ) { mText.assign( *(++mCurrentHistoryLine) ); - setCursor(llmin((S32)mText.length(), getCursor())); + setCursorToEnd(); } else { diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 900a814238109bc9dee6985c608484fb91ecefdd..6d590cf54e4739f9ee8f2f813ea7718b40af03a6 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -3738,8 +3738,7 @@ void LLContextMenuBranch::buildDrawLabel( void ) appendAcceleratorString( st ); mDrawAccelLabel = st; - // No special branch suffix - mDrawBranchLabel.clear(); + mDrawBranchLabel = LLMenuGL::BRANCH_SUFFIX; } void LLContextMenuBranch::showSubMenu() diff --git a/indra/llui/llmultislider.cpp b/indra/llui/llmultislider.cpp index 1f6fa12969ea0f948cb47f61668cfbab8082fa38..d4e6091ee037eb409fdacd391a61ef0a7913b4f8 100644 --- a/indra/llui/llmultislider.cpp +++ b/indra/llui/llmultislider.cpp @@ -101,8 +101,8 @@ LLMultiSlider::LLMultiSlider(const LLMultiSlider::Params& p) setMouseUpCallback(initCommitCallback(p.mouse_up_callback)); } - for (LLInitParam::ParamIterator<SliderParams>::const_iterator it = p.sliders().begin(); - it != p.sliders().end(); + for (LLInitParam::ParamIterator<SliderParams>::const_iterator it = p.sliders.begin(); + it != p.sliders.end(); ++it) { if (it->name.isProvided()) diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 99d540a9de779bba7279d4ae6673bfd644c05478..30cd85619ef1eb56801427b39fb689bc01d75335 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -27,6 +27,7 @@ #include "linden_common.h" #include "llnotifications.h" +#include "llnotificationtemplate.h" #include "llinstantmessage.h" #include "llxmlnode.h" @@ -37,6 +38,8 @@ #include "lltrans.h" #include "llnotificationslistener.h" #include "llstring.h" +#include "llsdparam.h" +#include "llsdutil.h" #include <algorithm> #include <boost/regex.hpp> @@ -44,6 +47,56 @@ const std::string NOTIFICATION_PERSIST_VERSION = "0.93"; +void NotificationPriorityValues::declareValues() +{ + declare("low", NOTIFICATION_PRIORITY_LOW); + declare("normal", NOTIFICATION_PRIORITY_NORMAL); + declare("high", NOTIFICATION_PRIORITY_HIGH); + declare("critical", NOTIFICATION_PRIORITY_CRITICAL); +} + +LLNotificationForm::FormElementBase::FormElementBase() +: name("name") +{} + +LLNotificationForm::FormIgnore::FormIgnore() +: text("text"), + control("control"), + invert_control("invert_control", true), + save_option("save_option", false) +{} + +LLNotificationForm::FormButton::FormButton() +: index("index"), + text("text"), + ignore("ignore"), + is_default("default"), + type("type") +{ + // set type here so it gets serialized + type = "button"; +} + +LLNotificationForm::FormInput::FormInput() +: type("type"), + width("width", 0) +{} + +LLNotificationForm::FormElement::FormElement() +: button("button"), + input("input") +{} + +LLNotificationForm::FormElements::FormElements() +: elements("") +{} + +LLNotificationForm::Params::Params() +: name("name"), + ignore("ignore"), + form_elements("") +{} + // Local channel for persistent notifications // Stores only persistent notifications. // Class users can use connectChanged() to process persistent notifications @@ -88,12 +141,7 @@ bool filterIgnoredNotifications(LLNotificationPtr notification) LLNotificationFormPtr form = notification->getForm(); // Check to see if the user wants to ignore this alert - if (form->getIgnoreType() != LLNotificationForm::IGNORE_NO) - { - return LLUI::sSettingGroups["ignores"]->getBOOL(notification->getName()); - } - - return true; + return !notification->getForm()->getIgnored(); } bool handleIgnoredNotification(const LLSD& payload) @@ -135,63 +183,68 @@ namespace LLNotificationFilters }; LLNotificationForm::LLNotificationForm() -: mFormData(LLSD::emptyArray()), - mIgnore(IGNORE_NO) +: mIgnore(IGNORE_NO) { } -LLNotificationForm::LLNotificationForm(const std::string& name, const LLXMLNodePtr xml_node) -: mFormData(LLSD::emptyArray()), - mIgnore(IGNORE_NO) +LLNotificationForm::LLNotificationForm(const std::string& name, const LLNotificationForm::Params& p) +: mIgnore(IGNORE_NO), + mInvertSetting(true) // ignore settings by default mean true=show, false=ignore { - if (!xml_node->hasName("form")) + if (p.ignore.isProvided()) { - llwarns << "Bad xml node for form: " << xml_node->getName() << llendl; - } - LLXMLNodePtr child = xml_node->getFirstChild(); - while(child) - { - child = LLNotifications::instance().checkForXMLTemplate(child); + mIgnoreMsg = p.ignore.text; - LLSD item_entry; - std::string element_name = child->getName()->mString; + if (!p.ignore.save_option) + { + mIgnore = IGNORE_WITH_DEFAULT_RESPONSE; + } + else + { + // remember last option chosen by user and automatically respond with that in the future + mIgnore = IGNORE_WITH_LAST_RESPONSE; + LLUI::sSettingGroups["ignores"]->declareLLSD(std::string("Default") + name, "", std::string("Default response for notification " + name)); + } - if (element_name == "ignore" ) + BOOL show_notification = TRUE; + if (p.ignore.control.isProvided()) { - bool save_option = false; - child->getAttribute_bool("save_option", save_option); - if (!save_option) - { - mIgnore = IGNORE_WITH_DEFAULT_RESPONSE; - } - else - { - // remember last option chosen by user and automatically respond with that in the future - mIgnore = IGNORE_WITH_LAST_RESPONSE; - LLUI::sSettingGroups["ignores"]->declareLLSD(std::string("Default") + name, "", std::string("Default response for notification " + name)); - } - child->getAttributeString("text", mIgnoreMsg); - BOOL show_notification = TRUE; - LLUI::sSettingGroups["ignores"]->declareBOOL(name, show_notification, "Ignore notification with this name", TRUE); + mIgnoreSetting = LLUI::sSettingGroups["config"]->getControl(p.ignore.control); + mInvertSetting = p.ignore.invert_control; } else { - // flatten xml form entry into single LLSD map with type==name - item_entry["type"] = element_name; - const LLXMLAttribList::iterator attrib_end = child->mAttributes.end(); - for(LLXMLAttribList::iterator attrib_it = child->mAttributes.begin(); - attrib_it != attrib_end; - ++attrib_it) - { - item_entry[std::string(attrib_it->second->getName()->mString)] = attrib_it->second->getValue(); - } - item_entry["value"] = child->getTextContents(); - mFormData.append(item_entry); + LLUI::sSettingGroups["ignores"]->declareBOOL(name, show_notification, "Ignore notification with this name", TRUE); + mIgnoreSetting = LLUI::sSettingGroups["ignores"]->getControl(name); } + } + + LLParamSDParser parser; + parser.writeSD(mFormData, p.form_elements); + + mFormData = mFormData[""]; + if (!mFormData.isArray()) + { + // change existing contents to a one element array + LLSD new_llsd_array = LLSD::emptyArray(); + new_llsd_array.append(mFormData); + mFormData = new_llsd_array; + } - child = child->getNextSibling(); + for (LLSD::array_iterator it = mFormData.beginArray(), end_it = mFormData.endArray(); + it != end_it; + ++it) + { + // lift contents of form element up a level, since element type is already encoded in "type" param + if (it->isMap() && it->beginMap() != it->endMap()) + { + *it = it->beginMap()->second; + } } + + LL_DEBUGS("Notifications") << name << LL_ENDL; + LL_DEBUGS("Notifications") << ll_pretty_print_sd(mFormData) << LL_ENDL; } LLNotificationForm::LLNotificationForm(const LLSD& sd) @@ -293,16 +346,64 @@ std::string LLNotificationForm::getDefaultOption() return ""; } -LLNotificationTemplate::LLNotificationTemplate() : - mExpireSeconds(0), - mExpireOption(-1), - mURLOption(-1), - mURLOpenExternally(-1), - mPersist(false), - mUnique(false), - mPriority(NOTIFICATION_PRIORITY_NORMAL) +LLControlVariablePtr LLNotificationForm::getIgnoreSetting() +{ + return mIgnoreSetting; +} + +bool LLNotificationForm::getIgnored() { - mForm = LLNotificationFormPtr(new LLNotificationForm()); + bool ignored = false; + if (mIgnore != LLNotificationForm::IGNORE_NO + && mIgnoreSetting) + { + ignored = mIgnoreSetting->getValue().asBoolean(); + if (mInvertSetting) ignored = !ignored; + } + + return ignored; +} + +void LLNotificationForm::setIgnored(bool ignored) +{ + if (mIgnoreSetting) + { + if (mInvertSetting) ignored = !ignored; + mIgnoreSetting->setValue(ignored); + } +} + +LLNotificationTemplate::LLNotificationTemplate(const LLNotificationTemplate::Params& p) +: mName(p.name), + mType(p.type), + mMessage(p.value), + mLabel(p.label), + mIcon(p.icon), + mURL(p.url.value), + mExpireSeconds(p.duration), + mExpireOption(p.expire_option), + mURLOption(p.url.option), + mURLTarget(p.url.target), + mUnique(p.unique.isProvided()), + mPriority(p.priority), + mPersist(p.persist), + mDefaultFunctor(p.functor.isProvided() ? p.functor() : p.name()) +{ + if (p.sound.isProvided() + && LLUI::sSettingGroups["config"]->controlExists(p.sound)) + { + mSoundEffect = LLUUID(LLUI::sSettingGroups["config"]->getString(p.sound)); + } + + for(LLInitParam::ParamIterator<LLNotificationTemplate::UniquenessContext>::const_iterator it = p.unique.contexts.begin(), + end_it = p.unique.contexts.end(); + it != end_it; + ++it) + { + mUniqueContext.push_back(it->key); + } + + mForm = LLNotificationFormPtr(new LLNotificationForm(p.name, p.form_ref.form)); } LLNotification::LLNotification(const LLNotification::Params& p) : @@ -499,7 +600,7 @@ void LLNotification::respond(const LLSD& response) { mResponder->handleRespond(asLLSD(), response); } - else + else if (!mResponseFunctorName.empty()) { // look up the functor LLNotificationFunctorRegistry::ResponseFunctor functor = @@ -507,6 +608,11 @@ void LLNotification::respond(const LLSD& response) // and then call it functor(asLLSD(), response); } + else + { + // no registered responder + return; + } if (mTemporaryResponder && !isReusable()) { @@ -517,8 +623,7 @@ void LLNotification::respond(const LLSD& response) if (mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) { - BOOL show_notification = mIgnored ? FALSE : TRUE; - LLUI::sSettingGroups["ignores"]->setBOOL(getName(), show_notification); + mForm->setIgnored(mIgnored); if (mIgnored && mForm->getIgnoreType() == LLNotificationForm::IGNORE_WITH_LAST_RESPONSE) { LLUI::sSettingGroups["ignores"]->setLLSD("Default" + getName(), response); @@ -528,6 +633,49 @@ void LLNotification::respond(const LLSD& response) update(); } +void LLNotification::respondWithDefault() +{ + respond(getResponseTemplate(WITH_DEFAULT_BUTTON)); +} + + +const std::string& LLNotification::getName() const +{ + return mTemplatep->mName; +} + +const std::string& LLNotification::getIcon() const +{ + return mTemplatep->mIcon; +} + + +bool LLNotification::isPersistent() const +{ + return mTemplatep->mPersist; +} + +std::string LLNotification::getType() const +{ + return (mTemplatep ? mTemplatep->mType : ""); +} + +S32 LLNotification::getURLOption() const +{ + return (mTemplatep ? mTemplatep->mURLOption : -1); +} + +S32 LLNotification::getURLOpenExternally() const +{ + return(mTemplatep? mTemplatep->mURLTarget == "_external": -1); +} + +bool LLNotification::hasUniquenessConstraints() const +{ + return (mTemplatep ? mTemplatep->mUnique : false); +} + + void LLNotification::setIgnored(bool ignore) { mIgnored = ignore; @@ -607,6 +755,8 @@ void LLNotification::init(const std::string& template_name, const LLSD& form_ele // apply substitution to form labels mForm->formatElements(mSubstitutions); + mIgnored = mForm->getIgnored(); + LLDate rightnow = LLDate::now(); if (mTemplatep->mExpireSeconds) { @@ -910,12 +1060,12 @@ std::string LLNotificationChannel::summarize() // LLNotifications implementation // --- LLNotifications::LLNotifications() : LLNotificationChannelBase(LLNotificationFilters::includeEverything, - LLNotificationComparators::orderByUUID()), - mIgnoreAllNotifications(false) + LLNotificationComparators::orderByUUID()), + mIgnoreAllNotifications(false) { LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Notification.Show", boost::bind(&LLNotifications::addFromCallback, this, _2)); - - mListener.reset(new LLNotificationsListener(*this)); + + mListener.reset(new LLNotificationsListener(*this)); } @@ -1095,11 +1245,6 @@ bool LLNotifications::templateExists(const std::string& name) return (mTemplates.count(name) != 0); } -void LLNotifications::clearTemplates() -{ - mTemplates.clear(); -} - void LLNotifications::forceResponse(const LLNotification::Params& params, S32 option) { LLNotificationPtr temp_notify(new LLNotification(params)); @@ -1162,190 +1307,88 @@ void replaceSubstitutionStrings(LLXMLNodePtr node, StringMap& replacements) } } -// private to this file -// returns true if the template request was invalid and there's nothing else we -// can do with this node, false if you should keep processing (it may have -// replaced the contents of the node referred to) -LLXMLNodePtr LLNotifications::checkForXMLTemplate(LLXMLNodePtr item) +void replaceFormText(LLNotificationForm::Params& form, const std::string& pattern, const std::string& replace) { - if (item->hasName("usetemplate")) + if (form.ignore.isProvided() && form.ignore.text() == pattern) { - std::string replacementName; - if (item->getAttributeString("name", replacementName)) + form.ignore.text = replace; + } + for (LLInitParam::ParamIterator<LLNotificationForm::FormElement>::iterator it = form.form_elements.elements.begin(), + end_it = form.form_elements.elements.end(); + it != end_it; + ++it) + { + if (it->button.isChosen() && it->button.text() == pattern) { - StringMap replacements; - for (LLXMLAttribList::const_iterator it=item->mAttributes.begin(); - it != item->mAttributes.end(); ++it) - { - replacements[it->second->getName()->mString] = it->second->getValue(); - } - if (mXmlTemplates.count(replacementName)) - { - item=LLXMLNode::replaceNode(item, mXmlTemplates[replacementName]); - - // walk the nodes looking for $(substitution) here and replace - replaceSubstitutionStrings(item, replacements); - } - else - { - llwarns << "XML template lookup failure on '" << replacementName << "' " << llendl; - } + it->button.text = replace; } } - return item; } bool LLNotifications::loadTemplates() { const std::string xml_filename = "notifications.xml"; + std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getXUIPaths().front(), xml_filename); + LLXMLNodePtr root; - BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root); if (!success || root.isNull() || !root->hasName( "notifications" )) { - llerrs << "Problem reading UI Notifications file: " << xml_filename << llendl; + llerrs << "Problem reading UI Notifications file: " << full_filename << llendl; return false; } - - clearTemplates(); - - for (LLXMLNodePtr item = root->getFirstChild(); - item.notNull(); item = item->getNextSibling()) - { - // we do this FIRST so that item can be changed if we - // encounter a usetemplate -- we just replace the - // current xml node and keep processing - item = checkForXMLTemplate(item); - - if (item->hasName("global")) - { - std::string global_name; - if (item->getAttributeString("name", global_name)) - { - mGlobalStrings[global_name] = item->getTextContents(); - } - continue; - } - - if (item->hasName("template")) - { - // store an xml template; templates must have a single node (can contain - // other nodes) - std::string name; - item->getAttributeString("name", name); - LLXMLNodePtr ptr = item->getFirstChild(); - mXmlTemplates[name] = ptr; - continue; - } - - if (!item->hasName("notification")) - { - llwarns << "Unexpected entity " << item->getName()->mString << - " found in " << xml_filename << llendl; - continue; - } - - // now we know we have a notification entry, so let's build it - LLNotificationTemplatePtr pTemplate(new LLNotificationTemplate()); - if (!item->getAttributeString("name", pTemplate->mName)) - { - llwarns << "Unable to parse notification with no name" << llendl; - continue; - } - - //llinfos << "Parsing " << pTemplate->mName << llendl; - - pTemplate->mMessage = item->getTextContents(); - pTemplate->mDefaultFunctor = pTemplate->mName; - item->getAttributeString("type", pTemplate->mType); - item->getAttributeString("icon", pTemplate->mIcon); - item->getAttributeString("label", pTemplate->mLabel); - item->getAttributeU32("duration", pTemplate->mExpireSeconds); - item->getAttributeU32("expireOption", pTemplate->mExpireOption); - - std::string priority; - item->getAttributeString("priority", priority); - pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL; - if (!priority.empty()) - { - if (priority == "low") pTemplate->mPriority = NOTIFICATION_PRIORITY_LOW; - if (priority == "normal") pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL; - if (priority == "high") pTemplate->mPriority = NOTIFICATION_PRIORITY_HIGH; - if (priority == "critical") pTemplate->mPriority = NOTIFICATION_PRIORITY_CRITICAL; - } - - item->getAttributeString("functor", pTemplate->mDefaultFunctor); - - BOOL persist = false; - item->getAttributeBOOL("persist", persist); - pTemplate->mPersist = persist; - - std::string sound; - item->getAttributeString("sound", sound); - if (!sound.empty()) + LLNotificationTemplate::Notifications params; + LLXUIParser parser; + parser.readXUI(root, params, full_filename); + + mTemplates.clear(); + + for(LLInitParam::ParamIterator<LLNotificationTemplate::GlobalString>::const_iterator it = params.strings.begin(), end_it = params.strings.end(); + it != end_it; + ++it) + { + mGlobalStrings[it->name] = it->value; + } + + std::map<std::string, LLNotificationForm::Params> form_templates; + + for(LLInitParam::ParamIterator<LLNotificationTemplate::Template>::const_iterator it = params.templates.begin(), end_it = params.templates.end(); + it != end_it; + ++it) + { + form_templates[it->name] = it->form; + } + + for(LLInitParam::ParamIterator<LLNotificationTemplate::Params>::iterator it = params.notifications.begin(), end_it = params.notifications.end(); + it != end_it; + ++it) + { + if (it->form_ref.form_template.isChosen()) { - // test for bad sound effect name / missing effect - if (LLUI::sSettingGroups["config"]->controlExists(sound)) + // replace form contents from template + it->form_ref.form = form_templates[it->form_ref.form_template.name]; + if(it->form_ref.form_template.yes_text.isProvided()) { - pTemplate->mSoundEffect = - LLUUID(LLUI::sSettingGroups["config"]->getString(sound)); + replaceFormText(it->form_ref.form, "$yestext", it->form_ref.form_template.yes_text); } - else + if(it->form_ref.form_template.no_text.isProvided()) { - llwarns << "Unknown sound effect control name " << sound - << llendl; + replaceFormText(it->form_ref.form, "$notext", it->form_ref.form_template.no_text); } - } - - for (LLXMLNodePtr child = item->getFirstChild(); - !child.isNull(); child = child->getNextSibling()) - { - child = checkForXMLTemplate(child); - - // <url> - if (child->hasName("url")) + if(it->form_ref.form_template.cancel_text.isProvided()) { - pTemplate->mURL = child->getTextContents(); - child->getAttributeU32("option", pTemplate->mURLOption); - child->getAttributeU32("openexternally", pTemplate->mURLOpenExternally); + replaceFormText(it->form_ref.form, "$canceltext", it->form_ref.form_template.cancel_text); } - - if (child->hasName("unique")) - { - pTemplate->mUnique = true; - for (LLXMLNodePtr formitem = child->getFirstChild(); - !formitem.isNull(); formitem = formitem->getNextSibling()) - { - if (formitem->hasName("context")) - { - std::string key; - formitem->getAttributeString("key", key); - pTemplate->mUniqueContext.push_back(key); - //llwarns << "adding " << key << " to unique context" << llendl; - } - else - { - llwarns << "'unique' has unrecognized subelement " - << formitem->getName()->mString << llendl; - } - } - } - - // <form> - if (child->hasName("form")) + if(it->form_ref.form_template.ignore_text.isProvided()) { - pTemplate->mForm = LLNotificationFormPtr(new LLNotificationForm(pTemplate->mName, child)); + replaceFormText(it->form_ref.form, "$ignoretext", it->form_ref.form_template.ignore_text); } } - addTemplate(pTemplate->mName, pTemplate); + addTemplate(it->name, LLNotificationTemplatePtr(new LLNotificationTemplate(*it))); } - - //std::ostringstream ostream; - //root->writeToOstream(ostream, "\n "); - //llwarns << ostream.str() << llendl; - + return true; } @@ -1396,6 +1439,8 @@ LLNotificationPtr LLNotifications::add(const LLNotification::Params& p) void LLNotifications::add(const LLNotificationPtr pNotif) { + if (pNotif == NULL) return; + // first see if we already have it -- if so, that's a problem LLNotificationSet::iterator it=mItems.find(pNotif); if (it != mItems.end()) @@ -1408,6 +1453,8 @@ void LLNotifications::add(const LLNotificationPtr pNotif) void LLNotifications::cancel(LLNotificationPtr pNotif) { + if (pNotif == NULL) return; + LLNotificationSet::iterator it=mItems.find(pNotif); if (it == mItems.end()) { @@ -1417,6 +1464,30 @@ void LLNotifications::cancel(LLNotificationPtr pNotif) updateItem(LLSD().with("sigtype", "delete").with("id", pNotif->id()), pNotif); } +void LLNotifications::cancelByName(const std::string& name) +{ + std::vector<LLNotificationPtr> notifs_to_cancel; + for (LLNotificationSet::iterator it=mItems.begin(), end_it = mItems.end(); + it != end_it; + ++it) + { + LLNotificationPtr pNotif = *it; + if (pNotif->getName() == name) + { + notifs_to_cancel.push_back(pNotif); + } + } + + for (std::vector<LLNotificationPtr>::iterator it = notifs_to_cancel.begin(), end_it = notifs_to_cancel.end(); + it != end_it; + ++it) + { + LLNotificationPtr pNotif = *it; + pNotif->cancel(); + updateItem(LLSD().with("sigtype", "delete").with("id", pNotif->id()), pNotif); + } +} + void LLNotifications::update(const LLNotificationPtr pNotif) { LLNotificationSet::iterator it=mItems.find(pNotif); diff --git a/indra/llui/llnotifications.h b/indra/llui/llnotifications.h index 2cc8803f10172bbac85c88e86e8ef467b77e052d..f075c44520d6b89a4326f07a9ed5b6e3f80b9cd3 100644 --- a/indra/llui/llnotifications.h +++ b/indra/llui/llnotifications.h @@ -100,7 +100,6 @@ #include "llnotificationptr.h" #include "llcachename.h" - typedef enum e_notification_priority { NOTIFICATION_PRIORITY_UNSPECIFIED, @@ -110,6 +109,11 @@ typedef enum e_notification_priority NOTIFICATION_PRIORITY_CRITICAL } ENotificationPriority; +struct NotificationPriorityValues : public LLInitParam::TypeValuesHelper<ENotificationPriority, NotificationPriorityValues> +{ + static void declareValues(); +}; + class LLNotificationResponderInterface { public: @@ -157,6 +161,66 @@ class LLNotificationForm LOG_CLASS(LLNotificationForm); public: + struct FormElementBase : public LLInitParam::Block<FormElementBase> + { + Optional<std::string> name; + + FormElementBase(); + }; + + struct FormIgnore : public LLInitParam::Block<FormIgnore, FormElementBase> + { + Optional<std::string> text; + Optional<bool> save_option; + Optional<std::string> control; + Optional<bool> invert_control; + + FormIgnore(); + }; + + struct FormButton : public LLInitParam::Block<FormButton, FormElementBase> + { + Mandatory<S32> index; + Mandatory<std::string> text; + Optional<std::string> ignore; + Optional<bool> is_default; + + Mandatory<std::string> type; + + FormButton(); + }; + + struct FormInput : public LLInitParam::Block<FormInput, FormElementBase> + { + Mandatory<std::string> type; + Optional<S32> width; + + FormInput(); + }; + + struct FormElement : public LLInitParam::Choice<FormElement> + { + Alternative<FormButton> button; + Alternative<FormInput> input; + + FormElement(); + }; + + struct FormElements : public LLInitParam::Block<FormElements> + { + Multiple<FormElement> elements; + FormElements(); + }; + + struct Params : public LLInitParam::Block<Params> + { + Optional<std::string> name; + Optional<FormIgnore> ignore; + Optional<FormElements> form_elements; + + Params(); + }; + typedef enum e_ignore_type { IGNORE_NO, @@ -167,8 +231,7 @@ class LLNotificationForm LLNotificationForm(); LLNotificationForm(const LLSD& sd); - LLNotificationForm(const std::string& name, - const LLPointer<class LLXMLNode> xml_node); + LLNotificationForm(const std::string& name, const Params& p); LLSD asLLSD() const; @@ -181,92 +244,25 @@ class LLNotificationForm // appends form elements from another form serialized as LLSD void append(const LLSD& sub_form); std::string getDefaultOption(); + LLPointer<class LLControlVariable> getIgnoreSetting(); + bool getIgnored(); + void setIgnored(bool ignored); EIgnoreType getIgnoreType() { return mIgnore; } std::string getIgnoreMessage() { return mIgnoreMsg; } private: - LLSD mFormData; - EIgnoreType mIgnore; - std::string mIgnoreMsg; + LLSD mFormData; + EIgnoreType mIgnore; + std::string mIgnoreMsg; + LLPointer<class LLControlVariable> mIgnoreSetting; + bool mInvertSetting; }; typedef boost::shared_ptr<LLNotificationForm> LLNotificationFormPtr; -// This is the class of object read from the XML file (notifications.xml, -// from the appropriate local language directory). -struct LLNotificationTemplate -{ - LLNotificationTemplate(); - // the name of the notification -- the key used to identify it - // Ideally, the key should follow variable naming rules - // (no spaces or punctuation). - std::string mName; - // The type of the notification - // used to control which queue it's stored in - std::string mType; - // The text used to display the notification. Replaceable parameters - // are enclosed in square brackets like this []. - std::string mMessage; - // The label for the notification; used for - // certain classes of notification (those with a window and a window title). - // Also used when a notification pops up underneath the current one. - // Replaceable parameters can be used in the label. - std::string mLabel; - // The name of the icon image. This should include an extension. - std::string mIcon; - // This is the Highlander bit -- "There Can Be Only One" - // An outstanding notification with this bit set - // is updated by an incoming notification with the same name, - // rather than creating a new entry in the queue. - // (used for things like progress indications, or repeating warnings - // like "the grid is going down in N minutes") - bool mUnique; - // if we want to be unique only if a certain part of the payload is constant - // specify the field names for the payload. The notification will only be - // combined if all of the fields named in the context are identical in the - // new and the old notification; otherwise, the notification will be - // duplicated. This is to support suppressing duplicate offers from the same - // sender but still differentiating different offers. Example: Invitation to - // conference chat. - std::vector<std::string> mUniqueContext; - // If this notification expires automatically, this value will be - // nonzero, and indicates the number of seconds for which the notification - // will be valid (a teleport offer, for example, might be valid for - // 300 seconds). - U32 mExpireSeconds; - // if the offer expires, one of the options is chosen automatically - // based on its "value" parameter. This controls which one. - // If expireSeconds is specified, expireOption should also be specified. - U32 mExpireOption; - // if the notification contains a url, it's stored here (and replaced - // into the message where [_URL] is found) - std::string mURL; - // if there's a URL in the message, this controls which option visits - // that URL. Obsolete this and eliminate the buttons for affected - // messages when we allow clickable URLs in the UI - U32 mURLOption; - - U32 mURLOpenExternally; - //This is a flag that tells if the url needs to open externally dispite - //what the user setting is. - - // does this notification persist across sessions? if so, it will be - // serialized to disk on first receipt and read on startup - bool mPersist; - // This is the name of the default functor, if present, to be - // used for the notification's callback. It is optional, and used only if - // the notification is constructed without an identified functor. - std::string mDefaultFunctor; - // The form data associated with a given notification (buttons, text boxes, etc) - LLNotificationFormPtr mForm; - // default priority for notifications of this type - ENotificationPriority mPriority; - // UUID of the audio file to be played when this notification arrives - // this is loaded as a name, but looked up to get the UUID upon template load. - // If null, it wasn't specified. - LLUUID mSoundEffect; -}; + +struct LLNotificationTemplate; // we want to keep a map of these by name, and it's best to manage them // with smart pointers @@ -302,7 +298,7 @@ friend class LLNotifications; // optional Optional<LLSD> substitutions; Optional<LLSD> payload; - Optional<ENotificationPriority> priority; + Optional<ENotificationPriority, NotificationPriorityValues> priority; Optional<LLSD> form_elements; Optional<LLDate> time_stamp; Optional<LLNotificationContext*> context; @@ -445,6 +441,7 @@ friend class LLNotifications; LLSD asLLSD(); void respond(const LLSD& sd); + void respondWithDefault(); void* getResponder() { return mResponderObj; } @@ -462,6 +459,13 @@ friend class LLNotifications; return mRespondedTo; } + bool isActive() const + { + return !isRespondedTo() + && !isCancelled() + && !isExpired(); + } + const LLSD& getResponse() { return mResponse; } bool isIgnored() const @@ -469,15 +473,11 @@ friend class LLNotifications; return mIgnored; } - const std::string& getName() const - { - return mTemplatep->mName; - } + const std::string& getName() const; - bool isPersistent() const - { - return mTemplatep->mPersist; - } + const std::string& getIcon() const; + + bool isPersistent() const; const LLUUID& id() const { @@ -499,28 +499,12 @@ friend class LLNotifications; return mTimestamp; } - std::string getType() const - { - return (mTemplatep ? mTemplatep->mType : ""); - } - + std::string getType() const; std::string getMessage() const; std::string getLabel() const; - std::string getURL() const; -// { -// return (mTemplatep ? mTemplatep->mURL : ""); -// } - - S32 getURLOption() const - { - return (mTemplatep ? mTemplatep->mURLOption : -1); - } - - S32 getURLOpenExternally() const - { - return(mTemplatep? mTemplatep->mURLOpenExternally : -1); - } + S32 getURLOption() const; + S32 getURLOpenExternally() const; const LLNotificationFormPtr getForm(); @@ -590,7 +574,7 @@ friend class LLNotifications; std::string summarize() const; - bool hasUniquenessConstraints() const { return (mTemplatep ? mTemplatep->mUnique : false);} + bool hasUniquenessConstraints() const; virtual ~LLNotification() {} }; @@ -872,7 +856,6 @@ class LLNotifications : // load notification descriptions from file; // OK to call more than once because it will reload bool loadTemplates(); - LLPointer<class LLXMLNode> checkForXMLTemplate(LLPointer<class LLXMLNode> item); // Add a simple notification (from XUI) void addFromCallback(const LLSD& name); @@ -894,6 +877,7 @@ class LLNotifications : void add(const LLNotificationPtr pNotif); void cancel(LLNotificationPtr pNotif); + void cancelByName(const std::string& name); void update(const LLNotificationPtr pNotif); LLNotificationPtr find(LLUUID uuid); @@ -917,8 +901,6 @@ class LLNotifications : // test for existence bool templateExists(const std::string& name); - // useful if you're reloading the file - void clearTemplates(); // erase all templates void forceResponse(const LLNotification::Params& params, S32 option); @@ -956,9 +938,6 @@ class LLNotifications : std::string mFileName; - typedef std::map<std::string, LLPointer<class LLXMLNode> > XMLTemplateMap; - XMLTemplateMap mXmlTemplates; - LLNotificationMap mUniqueNotifications; typedef std::map<std::string, std::string> GlobalStringMap; diff --git a/indra/llui/llnotificationslistener.cpp b/indra/llui/llnotificationslistener.cpp index 44a90398fd956a42d259ffc9b4937638f9304f1b..3bbeb3a77845aae010cb1f40ade9f3b989f1ce18 100644 --- a/indra/llui/llnotificationslistener.cpp +++ b/indra/llui/llnotificationslistener.cpp @@ -29,6 +29,7 @@ #include "linden_common.h" #include "llnotificationslistener.h" #include "llnotifications.h" +#include "llnotificationtemplate.h" #include "llsd.h" #include "llui.h" @@ -182,7 +183,11 @@ void LLNotificationsListener::ignore(const LLSD& params) const if (params["name"].isDefined()) { // ["name"] was passed: ignore just that notification - LLUI::sSettingGroups["ignores"]->setBOOL(params["name"], ignore); + LLNotificationTemplatePtr templatep = mNotifications.getTemplate(params["name"]); + if (templatep) + { + templatep->mForm->setIgnored(ignore); + } } else { diff --git a/indra/llui/llnotificationtemplate.h b/indra/llui/llnotificationtemplate.h new file mode 100644 index 0000000000000000000000000000000000000000..6bc0d2aaffd358b3a3cd87746cd422f0a2eb294b --- /dev/null +++ b/indra/llui/llnotificationtemplate.h @@ -0,0 +1,282 @@ +/** +* @file llnotificationtemplate.h +* @brief Description of notification contents +* @author Q (with assistance from Richard and Coco) +* +* $LicenseInfo:firstyear=2008&license=viewerlgpl$ +* Second Life Viewer Source Code +* Copyright (C) 2010, Linden Research, Inc. +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; +* version 2.1 of the License only. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +* +* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA +* $/LicenseInfo$ +*/ + +#ifndef LL_LLNOTIFICATION_TEMPLATE_H +#define LL_LLNOTIFICATION_TEMPLATE_H + +//#include <string> +//#include <list> +//#include <vector> +//#include <map> +//#include <set> +//#include <iomanip> +//#include <sstream> +// +//#include <boost/utility.hpp> +//#include <boost/shared_ptr.hpp> +//#include <boost/enable_shared_from_this.hpp> +//#include <boost/type_traits.hpp> +// +//// we want to minimize external dependencies, but this one is important +//#include "llsd.h" +// +//// and we need this to manage the notification callbacks +//#include "llevents.h" +//#include "llfunctorregistry.h" +//#include "llpointer.h" +#include "llinitparam.h" +//#include "llnotificationslistener.h" +//#include "llnotificationptr.h" +//#include "llcachename.h" +#include "llnotifications.h" + + +typedef boost::shared_ptr<LLNotificationForm> LLNotificationFormPtr; + +// This is the class of object read from the XML file (notifications.xml, +// from the appropriate local language directory). +struct LLNotificationTemplate +{ + struct GlobalString : public LLInitParam::Block<GlobalString> + { + Mandatory<std::string> name, + value; + + GlobalString() + : name("name"), + value("value") + {} + }; + + struct UniquenessContext : public LLInitParam::Block<UniquenessContext> + { + Mandatory<std::string> key; + + UniquenessContext() + : key("key") + {} + + }; + + struct UniquenessConstraint : public LLInitParam::Block<UniquenessConstraint> + { + private: + // this idiom allows + // <notification unique="true"> + // as well as + // <notification> <unique> <context key=""/> </unique>... + Optional<bool> dummy_val; + public: + Multiple<UniquenessContext> contexts; + + UniquenessConstraint() + : contexts("context"), + dummy_val("") + {} + }; + + // Templates are used to define common form types, such as OK/Cancel dialogs, etc. + + struct Template : public LLInitParam::Block<Template> + { + Mandatory<std::string> name; + Mandatory<LLNotificationForm::Params> form; + + Template() + : name("name"), + form("form") + {} + }; + + // Reference a template to use its form elements + struct TemplateRef : public LLInitParam::Block<TemplateRef> + { + Mandatory<std::string> name; + Optional<std::string> yes_text, + no_text, + cancel_text, + ignore_text; + + TemplateRef() + : name("name"), + yes_text("yestext"), + no_text("notext"), + cancel_text("canceltext"), + ignore_text("ignoretext") + {} + }; + + struct URL : public LLInitParam::Block<URL> + { + Mandatory<S32> option; + Mandatory<std::string> value; + Optional<std::string> target; + Ignored name; + + URL() + : option("option", -1), + value("value"), + target("target", "_blank"), + name("name") + {} + }; + + struct FormRef : public LLInitParam::Choice<FormRef> + { + Alternative<LLNotificationForm::Params> form; + Alternative<TemplateRef> form_template; + + FormRef() + : form("form"), + form_template("usetemplate") + {} + }; + + struct Params : public LLInitParam::Block<Params> + { + Mandatory<std::string> name; + Optional<bool> persist; + Optional<std::string> functor, + icon, + label, + sound, + type, + value; + Optional<U32> duration; + Optional<S32> expire_option; + Optional<URL> url; + Optional<UniquenessConstraint> unique; + Optional<FormRef> form_ref; + Optional<ENotificationPriority, + NotificationPriorityValues> priority; + + + Params() + : name("name"), + persist("persist", false), + functor("functor"), + icon("icon"), + label("label"), + priority("priority"), + sound("sound"), + type("type"), + value("value"), + duration("duration"), + expire_option("expireOption", -1), + url("url"), + unique("unique"), + form_ref("") + {} + + }; + + struct Notifications : public LLInitParam::Block<Notifications> + { + Multiple<GlobalString> strings; + Multiple<Template> templates; + Multiple<Params> notifications; + + Notifications() + : strings("global"), + notifications("notification"), + templates("template") + {} + }; + + LLNotificationTemplate(const Params& p); + // the name of the notification -- the key used to identify it + // Ideally, the key should follow variable naming rules + // (no spaces or punctuation). + std::string mName; + // The type of the notification + // used to control which queue it's stored in + std::string mType; + // The text used to display the notification. Replaceable parameters + // are enclosed in square brackets like this []. + std::string mMessage; + // The label for the notification; used for + // certain classes of notification (those with a window and a window title). + // Also used when a notification pops up underneath the current one. + // Replaceable parameters can be used in the label. + std::string mLabel; + // The name of the icon image. This should include an extension. + std::string mIcon; + // This is the Highlander bit -- "There Can Be Only One" + // An outstanding notification with this bit set + // is updated by an incoming notification with the same name, + // rather than creating a new entry in the queue. + // (used for things like progress indications, or repeating warnings + // like "the grid is going down in N minutes") + bool mUnique; + // if we want to be unique only if a certain part of the payload is constant + // specify the field names for the payload. The notification will only be + // combined if all of the fields named in the context are identical in the + // new and the old notification; otherwise, the notification will be + // duplicated. This is to support suppressing duplicate offers from the same + // sender but still differentiating different offers. Example: Invitation to + // conference chat. + std::vector<std::string> mUniqueContext; + // If this notification expires automatically, this value will be + // nonzero, and indicates the number of seconds for which the notification + // will be valid (a teleport offer, for example, might be valid for + // 300 seconds). + U32 mExpireSeconds; + // if the offer expires, one of the options is chosen automatically + // based on its "value" parameter. This controls which one. + // If expireSeconds is specified, expireOption should also be specified. + U32 mExpireOption; + // if the notification contains a url, it's stored here (and replaced + // into the message where [_URL] is found) + std::string mURL; + // if there's a URL in the message, this controls which option visits + // that URL. Obsolete this and eliminate the buttons for affected + // messages when we allow clickable URLs in the UI + U32 mURLOption; + + std::string mURLTarget; + //This is a flag that tells if the url needs to open externally dispite + //what the user setting is. + + // does this notification persist across sessions? if so, it will be + // serialized to disk on first receipt and read on startup + bool mPersist; + // This is the name of the default functor, if present, to be + // used for the notification's callback. It is optional, and used only if + // the notification is constructed without an identified functor. + std::string mDefaultFunctor; + // The form data associated with a given notification (buttons, text boxes, etc) + LLNotificationFormPtr mForm; + // default priority for notifications of this type + ENotificationPriority mPriority; + // UUID of the audio file to be played when this notification arrives + // this is loaded as a name, but looked up to get the UUID upon template load. + // If null, it wasn't specified. + LLUUID mSoundEffect; +}; + +#endif //LL_LLNOTIFICATION_TEMPLATE_H + diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index b2e08c48c5dcdf3e0c436e622b432359e7203866..c8e56630f1f301878b56670f5e2632fba575856e 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -35,6 +35,7 @@ #include "llfontgl.h" #include "llrect.h" #include "llerror.h" +#include "lldir.h" #include "lltimer.h" #include "llaccordionctrltab.h" @@ -52,6 +53,8 @@ #include "lltabcontainer.h" static LLDefaultChildRegistry::Register<LLPanel> r1("panel", &LLPanel::fromXML); +LLPanel::factory_stack_t LLPanel::sFactoryStack; + // Compiler optimization, generate extern template template class LLPanel* LLView::getChild<class LLPanel>( @@ -380,8 +383,7 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_ LLPanel* panelp = NULL; - { - LLFastTimer timer(FTM_PANEL_CONSTRUCTION); + { LLFastTimer _(FTM_PANEL_CONSTRUCTION); if(!class_attr.empty()) { @@ -394,7 +396,7 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_ if (!panelp) { - panelp = LLUICtrlFactory::getInstance()->createFactoryPanel(name); + panelp = createFactoryPanel(name); llassert(panelp); if (!panelp) @@ -407,20 +409,20 @@ LLView* LLPanel::fromXML(LLXMLNodePtr node, LLView* parent, LLXMLNodePtr output_ // factory panels may have registered their own factory maps if (!panelp->getFactoryMap().empty()) { - LLUICtrlFactory::instance().pushFactoryFunctions(&panelp->getFactoryMap()); + sFactoryStack.push_back(&panelp->getFactoryMap()); } // 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->initPanelXML(node, parent, output_node, LLUICtrlFactory::getDefaultParams<LLPanel>()); panelp->mCommitCallbackRegistrar.popScope(); panelp->mEnableCallbackRegistrar.popScope(); if (!panelp->getFactoryMap().empty()) { - LLUICtrlFactory::instance().popFactoryFunctions(); + sFactoryStack.pop_back(); } return panelp; @@ -444,8 +446,8 @@ void LLPanel::initFromParams(const LLPanel::Params& p) setVisibleCallback(initCommitCallback(p.visible_callback)); } - for (LLInitParam::ParamIterator<LocalizedString>::const_iterator it = p.strings().begin(); - it != p.strings().end(); + for (LLInitParam::ParamIterator<LocalizedString>::const_iterator it = p.strings.begin(); + it != p.strings.end(); ++it) { mUIStrings[it->name] = it->value; @@ -487,11 +489,9 @@ 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) +BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node, const LLPanel::Params& default_params) { - const LLPanel::Params& default_params(LLUICtrlFactory::getDefaultParams<LLPanel>()); Params params(default_params); - { LLFastTimer timer(FTM_PANEL_SETUP); @@ -505,6 +505,8 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu setXMLFilename(xml_filename); } + LLXUIParser parser; + if (!xml_filename.empty()) { LLUICtrlFactory::instance().pushFileName(xml_filename); @@ -514,12 +516,11 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu { //if we are exporting, we want to export the current xml //not the referenced xml - LLXUIParser::instance().readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); + parser.readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); Params output_params(params); setupParamsForExport(output_params, parent); output_node->setName(node->getName()->mString); - LLXUIParser::instance().writeXUI( - output_node, output_params, &default_params); + parser.writeXUI(output_node, output_params, &default_params); return TRUE; } @@ -530,7 +531,7 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu return FALSE; } - LLXUIParser::instance().readXUI(referenced_xml, params, LLUICtrlFactory::getInstance()->getCurFileName()); + parser.readXUI(referenced_xml, params, LLUICtrlFactory::getInstance()->getCurFileName()); // add children using dimensions from referenced xml for consistent layout setShape(params.rect); @@ -540,15 +541,14 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu } // ask LLUICtrlFactory for filename, since xml_filename might be empty - LLXUIParser::instance().readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); + parser.readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); 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); + parser.writeXUI(output_node, output_params, &default_params); } params.from_xui = true; @@ -959,3 +959,89 @@ boost::signals2::connection LLPanel::setVisibleCallback( const commit_signal_t:: return mVisibleSignal->connect(cb); } + +static LLFastTimer::DeclareTimer FTM_BUILD_PANELS("Build Panels"); + +//----------------------------------------------------------------------------- +// buildPanel() +//----------------------------------------------------------------------------- +BOOL LLPanel::buildFromFile(const std::string& filename, LLXMLNodePtr output_node, const LLPanel::Params& default_params) +{ + LLFastTimer timer(FTM_BUILD_PANELS); + BOOL didPost = FALSE; + LLXMLNodePtr 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; + } + + // root must be called panel + if( !root->hasName("panel" ) ) + { + llwarns << "Root node should be named panel in : " << filename << llendl; + return didPost; + } + + lldebugs << "Building panel " << filename << llendl; + + LLUICtrlFactory::instance().pushFileName(filename); + { + if (!getFactoryMap().empty()) + { + sFactoryStack.push_back(&getFactoryMap()); + } + + // for local registry callbacks; define in constructor, referenced in XUI or postBuild + getCommitCallbackRegistrar().pushScope(); + getEnableCallbackRegistrar().pushScope(); + + didPost = initPanelXML(root, NULL, output_node, default_params); + + getCommitCallbackRegistrar().popScope(); + getEnableCallbackRegistrar().popScope(); + + setXMLFilename(filename); + + if (!getFactoryMap().empty()) + { + sFactoryStack.pop_back(); + } + } + LLUICtrlFactory::instance().popFileName(); + return didPost; +} + +//----------------------------------------------------------------------------- +// createFactoryPanel() +//----------------------------------------------------------------------------- +LLPanel* LLPanel::createFactoryPanel(const std::string& name) +{ + std::deque<const LLCallbackMap::map_t*>::iterator itor; + for (itor = sFactoryStack.begin(); itor != sFactoryStack.end(); ++itor) + { + const LLCallbackMap::map_t* factory_map = *itor; + + // Look up this panel's name in the map. + LLCallbackMap::map_const_iter_t iter = factory_map->find( name ); + if (iter != factory_map->end()) + { + // Use the factory to create the panel, instead of using a default LLPanel. + LLPanel *ret = (LLPanel*) iter->second.mCallback( iter->second.mData ); + return ret; + } + } + LLPanel::Params panel_p; + return LLUICtrlFactory::create<LLPanel>(panel_p); +} diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index a7224648c146b5dfb5685f16250e2bbba3e55f9a..c1a1a06f39c02ed8ef36e6d3d4e4c108d0b04944 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -104,7 +104,10 @@ class LLPanel : public LLUICtrl LLPanel(const LLPanel::Params& params = getDefaultParams()); public: -// LLPanel(const std::string& name, const LLRect& rect = LLRect(), BOOL bordered = TRUE); + BOOL buildFromFile(const std::string &filename, LLXMLNodePtr output_node = NULL, const LLPanel::Params&default_params = getDefaultParams()); + + static LLPanel* createFactoryPanel(const std::string& name); + /*virtual*/ ~LLPanel(); // LLView interface @@ -157,7 +160,7 @@ class LLPanel : public LLUICtrl EnableCallbackRegistry::ScopedRegistrar& getEnableCallbackRegistrar() { return mEnableCallbackRegistrar; } void initFromParams(const Params& p); - BOOL initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node = NULL); + BOOL initPanelXML( LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node, const LLPanel::Params& default_params); bool hasString(const std::string& name); std::string getString(const std::string& name, const LLStringUtil::format_map_t& args) const; @@ -256,6 +259,8 @@ class LLPanel : public LLUICtrl commit_signal_t* mVisibleSignal; // Called when visibility changes, passes new visibility as LLSD() std::string mHelpTopic; // the name of this panel's help topic to display in the Help Viewer + typedef std::deque<const LLCallbackMap::map_t*> factory_stack_t; + static factory_stack_t sFactoryStack; private: BOOL mBgVisible; // any background at all? @@ -285,4 +290,57 @@ extern template class LLPanel* LLView::getChild<class LLPanel>( const std::string& name, BOOL recurse) const; #endif +typedef boost::function<LLPanel* (void)> LLPanelClassCreatorFunc; + +// 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,LLPanelClassCreatorFunc func) + { + mPanelClassesNames[tag] = func; + } + + LLPanel* createPanelClass(const std::string& tag) + { + param_name_map_t::iterator iT = mPanelClassesNames.find(tag); + if(iT == mPanelClassesNames.end()) + return 0; + return iT->second(); + } + template<typename T> + static T* defaultPanelClassBuilder() + { + T* pT = new T(); + return pT; + } + +private: + typedef std::map< std::string, LLPanelClassCreatorFunc> param_name_map_t; + + param_name_map_t mPanelClassesNames; +}; + + +// 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>); +} + + #endif diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp index 83c42a5ab8dac12a07b8612b1c3333d03f363fc1..cc348fdc63c2923e9d97d1978945ad71bdec69f2 100644 --- a/indra/llui/llradiogroup.cpp +++ b/indra/llui/llradiogroup.cpp @@ -100,8 +100,8 @@ LLRadioGroup::LLRadioGroup(const LLRadioGroup::Params& p) void LLRadioGroup::initFromParams(const Params& p) { - for (LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items().begin(); - it != p.items().end(); + for (LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items.begin(); + it != p.items.end(); ++it) { LLRadioGroup::ItemParams item_params(*it); diff --git a/indra/llui/llrngwriter.cpp b/indra/llui/llrngwriter.cpp index 50b7bbab903c0199365dab1b13e9406609d1d313..5e6840d7df83e96cf92b2e2841eec1c805d5eb98 100644 --- a/indra/llui/llrngwriter.cpp +++ b/indra/llui/llrngwriter.cpp @@ -30,10 +30,15 @@ #include "lluicolor.h" #include "lluictrlfactory.h" +static LLInitParam::Parser::parser_read_func_map_t sReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs; + // // LLRNGWriter - writes Relax NG schema files based on a param block // LLRNGWriter::LLRNGWriter() +: Parser(sReadFuncs, sWriteFuncs, sInspectFuncs) { // register various callbacks for inspecting the contents of a param block registerInspectFunc<bool>(boost::bind(&LLRNGWriter::writeAttribute, this, "boolean", _1, _2, _3, _4)); diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 84e438cfb78ebd943464357011b0e3072ec395f4..7df7c13dc09bd662ce5d3d59292be0a8306fae03 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -259,15 +259,15 @@ LLScrollListCtrl::LLScrollListCtrl(const LLScrollListCtrl::Params& p) } - for (LLInitParam::ParamIterator<LLScrollListColumn::Params>::const_iterator row_it = p.contents.columns().begin(); - row_it != p.contents.columns().end(); + for (LLInitParam::ParamIterator<LLScrollListColumn::Params>::const_iterator row_it = p.contents.columns.begin(); + row_it != p.contents.columns.end(); ++row_it) { addColumn(*row_it); } - for (LLInitParam::ParamIterator<LLScrollListItem::Params>::const_iterator row_it = p.contents.rows().begin(); - row_it != p.contents.rows().end(); + for (LLInitParam::ParamIterator<LLScrollListItem::Params>::const_iterator row_it = p.contents.rows.begin(); + row_it != p.contents.rows.end(); ++row_it) { addRow(*row_it); @@ -537,23 +537,7 @@ BOOL LLScrollListCtrl::addItem( LLScrollListItem* item, EAddPosition pos, BOOL r setNeedsSort(); break; - case ADD_SORTED: - { - // sort by column 0, in ascending order - std::vector<sort_column_t> single_sort_column; - single_sort_column.push_back(std::make_pair(0, TRUE)); - - mItemList.push_back(item); - std::stable_sort( - mItemList.begin(), - mItemList.end(), - SortScrollListItem(single_sort_column,mSortCallback)); - - // ADD_SORTED just sorts by first column... - // this might not match user sort criteria, so flag list as being in unsorted state - setNeedsSort(); - break; - } + case ADD_DEFAULT: case ADD_BOTTOM: mItemList.push_back(item); setNeedsSort(); @@ -2578,7 +2562,8 @@ BOOL LLScrollListCtrl::canDeselect() const void LLScrollListCtrl::addColumn(const LLSD& column, EAddPosition pos) { LLScrollListColumn::Params p; - LLParamSDParser::instance().readSD(column, p); + LLParamSDParser parser; + parser.readSD(column, p); addColumn(p, pos); } @@ -2764,31 +2749,35 @@ LLScrollListColumn* LLScrollListCtrl::getColumn(const std::string& name) return NULL; } - +LLFastTimer::DeclareTimer FTM_ADD_SCROLLLIST_ELEMENT("Add Scroll List Item"); LLScrollListItem* LLScrollListCtrl::addElement(const LLSD& element, EAddPosition pos, void* userdata) { + LLFastTimer _(FTM_ADD_SCROLLLIST_ELEMENT); LLScrollListItem::Params item_params; - LLParamSDParser::instance().readSD(element, item_params); + LLParamSDParser parser; + parser.readSD(element, item_params); item_params.userdata = userdata; return addRow(item_params, pos); } LLScrollListItem* LLScrollListCtrl::addRow(const LLScrollListItem::Params& item_p, EAddPosition pos) { + LLFastTimer _(FTM_ADD_SCROLLLIST_ELEMENT); LLScrollListItem *new_item = new LLScrollListItem(item_p); return addRow(new_item, item_p, pos); } LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLScrollListItem::Params& item_p, EAddPosition pos) { + LLFastTimer _(FTM_ADD_SCROLLLIST_ELEMENT); if (!item_p.validateBlock() || !new_item) return NULL; new_item->setNumColumns(mColumns.size()); // Add any columns we don't already have S32 col_index = 0; - for(LLInitParam::ParamIterator<LLScrollListCell::Params>::const_iterator itor = item_p.columns().begin(); - itor != item_p.columns().end(); + for(LLInitParam::ParamIterator<LLScrollListCell::Params>::const_iterator itor = item_p.columns.begin(); + itor != item_p.columns.end(); ++itor) { LLScrollListCell::Params cell_p = *itor; @@ -2839,7 +2828,7 @@ LLScrollListItem* LLScrollListCtrl::addRow(LLScrollListItem *new_item, const LLS col_index++; } - if (item_p.columns().empty()) + if (item_p.columns.empty()) { if (mColumns.empty()) { diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp index 54c3060c4a656536dba0c06b334586165b143dcd..f97f80ab6cb63c3c99b7e0950107a03e2a69f947 100644 --- a/indra/llui/llsdparam.cpp +++ b/indra/llui/llsdparam.cpp @@ -29,49 +29,42 @@ // Project includes #include "llsdparam.h" +#include "llsdutil.h" + +static LLInitParam::Parser::parser_read_func_map_t sReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs; // // LLParamSDParser // LLParamSDParser::LLParamSDParser() +: Parser(sReadFuncs, sWriteFuncs, sInspectFuncs) { using boost::bind; - registerParserFuncs<S32>(bind(&LLParamSDParser::readTypedValue<S32>, this, _1, &LLSD::asInteger), - bind(&LLParamSDParser::writeTypedValue<S32>, this, _1, _2)); - registerParserFuncs<U32>(bind(&LLParamSDParser::readTypedValue<U32>, this, _1, &LLSD::asInteger), - bind(&LLParamSDParser::writeU32Param, this, _1, _2)); - registerParserFuncs<F32>(bind(&LLParamSDParser::readTypedValue<F32>, this, _1, &LLSD::asReal), - bind(&LLParamSDParser::writeTypedValue<F32>, this, _1, _2)); - registerParserFuncs<F64>(bind(&LLParamSDParser::readTypedValue<F64>, this, _1, &LLSD::asReal), - bind(&LLParamSDParser::writeTypedValue<F64>, this, _1, _2)); - registerParserFuncs<bool>(bind(&LLParamSDParser::readTypedValue<F32>, this, _1, &LLSD::asBoolean), - bind(&LLParamSDParser::writeTypedValue<F32>, this, _1, _2)); - registerParserFuncs<std::string>(bind(&LLParamSDParser::readTypedValue<std::string>, this, _1, &LLSD::asString), - bind(&LLParamSDParser::writeTypedValue<std::string>, this, _1, _2)); - registerParserFuncs<LLUUID>(bind(&LLParamSDParser::readTypedValue<LLUUID>, this, _1, &LLSD::asUUID), - bind(&LLParamSDParser::writeTypedValue<LLUUID>, this, _1, _2)); - registerParserFuncs<LLDate>(bind(&LLParamSDParser::readTypedValue<LLDate>, this, _1, &LLSD::asDate), - bind(&LLParamSDParser::writeTypedValue<LLDate>, this, _1, _2)); - registerParserFuncs<LLURI>(bind(&LLParamSDParser::readTypedValue<LLURI>, this, _1, &LLSD::asURI), - bind(&LLParamSDParser::writeTypedValue<LLURI>, this, _1, _2)); - registerParserFuncs<LLSD>(bind(&LLParamSDParser::readSDParam, this, _1), - bind(&LLParamSDParser::writeTypedValue<LLSD>, this, _1, _2)); -} - -bool LLParamSDParser::readSDParam(void* value_ptr) -{ - if (!mCurReadSD) return false; - *((LLSD*)value_ptr) = *mCurReadSD; - return true; + if (sReadFuncs.empty()) + { + registerParserFuncs<S32>(readS32, &LLParamSDParser::writeTypedValue<S32>); + registerParserFuncs<U32>(readU32, &LLParamSDParser::writeU32Param); + registerParserFuncs<F32>(readF32, &LLParamSDParser::writeTypedValue<F32>); + registerParserFuncs<F64>(readF64, &LLParamSDParser::writeTypedValue<F64>); + registerParserFuncs<bool>(readBool, &LLParamSDParser::writeTypedValue<bool>); + registerParserFuncs<std::string>(readString, &LLParamSDParser::writeTypedValue<std::string>); + registerParserFuncs<LLUUID>(readUUID, &LLParamSDParser::writeTypedValue<LLUUID>); + registerParserFuncs<LLDate>(readDate, &LLParamSDParser::writeTypedValue<LLDate>); + registerParserFuncs<LLURI>(readURI, &LLParamSDParser::writeTypedValue<LLURI>); + registerParserFuncs<LLSD>(readSD, &LLParamSDParser::writeTypedValue<LLSD>); + } } // special case handling of U32 due to ambiguous LLSD::assign overload -bool LLParamSDParser::writeU32Param(const void* val_ptr, const parser_t::name_stack_t& name_stack) +bool LLParamSDParser::writeU32Param(LLParamSDParser::parser_t& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack) { - if (!mWriteSD) return false; + LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser); + if (!sdparser.mWriteRootSD) return false; - LLSD* sd_to_write = getSDWriteNode(name_stack); + LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack); if (!sd_to_write) return false; sd_to_write->assign((S32)*((const U32*)val_ptr)); @@ -89,7 +82,8 @@ void LLParamSDParser::readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool void LLParamSDParser::writeSD(LLSD& sd, const LLInitParam::BaseBlock& block) { - mWriteSD = &sd; + mNameStack.clear(); + mWriteRootSD = &sd; block.serializeBlock(*this); } @@ -139,6 +133,155 @@ void LLParamSDParser::readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block LLSD* LLParamSDParser::getSDWriteNode(const parser_t::name_stack_t& name_stack) { //TODO: implement nested LLSD writing - return mWriteSD; + LLSD* sd_to_write = mWriteRootSD; + bool new_traversal = false; + for (name_stack_t::const_iterator it = name_stack.begin(), prev_it = mNameStack.begin(); + it != name_stack.end(); + ++it) + { + bool new_array_entry = false; + if (prev_it == mNameStack.end()) + { + new_traversal = true; + } + else + { + if (!new_traversal // have not diverged yet from previous trace + && prev_it->first == it->first // names match + && prev_it->second != it->second) // versions differ + { + // name stacks match, but version numbers differ in last place. + // create a different entry at this point using an LLSD array + new_array_entry = true; + } + if (prev_it->first != it->first // names differ + || prev_it->second != it->second) // versions differ + { + // at this point we have diverged from our last trace + // so any elements referenced here are new + new_traversal = true; + } + } + + LLSD* child_sd = &(*sd_to_write)[it->first]; + + if (child_sd->isArray()) + { + if (new_traversal) + { + // write to new element at end + sd_to_write = &(*child_sd)[child_sd->size()]; + } + else + { + // write to last of existing elements, or first element if empty + sd_to_write = &(*child_sd)[llmax(0, child_sd->size() - 1)]; + } + } + else + { + if (new_array_entry && !child_sd->isArray()) + { + // copy child contents into first element of an array + LLSD new_array = LLSD::emptyArray(); + new_array.append(*child_sd); + // assign array to slot that previously held the single value + *child_sd = new_array; + // return next element in that array + sd_to_write = &((*child_sd)[1]); + } + else + { + sd_to_write = child_sd; + } + } + if (prev_it != mNameStack.end()) + { + ++prev_it; + } + } + mNameStack = name_stack; + + //llinfos << ll_pretty_print_sd(*mWriteRootSD) << llendl; + return sd_to_write; +} + +bool LLParamSDParser::readS32(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((S32*)val_ptr) = self.mCurReadSD->asInteger(); + return true; +} + +bool LLParamSDParser::readU32(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((U32*)val_ptr) = self.mCurReadSD->asInteger(); + return true; +} + +bool LLParamSDParser::readF32(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((F32*)val_ptr) = self.mCurReadSD->asReal(); + return true; +} + +bool LLParamSDParser::readF64(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((F64*)val_ptr) = self.mCurReadSD->asReal(); + return true; +} + +bool LLParamSDParser::readBool(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((bool*)val_ptr) = self.mCurReadSD->asBoolean(); + return true; +} + +bool LLParamSDParser::readString(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((std::string*)val_ptr) = self.mCurReadSD->asString(); + return true; } +bool LLParamSDParser::readUUID(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((LLUUID*)val_ptr) = self.mCurReadSD->asUUID(); + return true; +} + +bool LLParamSDParser::readDate(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((LLDate*)val_ptr) = self.mCurReadSD->asDate(); + return true; +} + +bool LLParamSDParser::readURI(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((LLURI*)val_ptr) = self.mCurReadSD->asURI(); + return true; +} + +bool LLParamSDParser::readSD(Parser& parser, void* val_ptr) +{ + LLParamSDParser& self = static_cast<LLParamSDParser&>(parser); + + *((LLSD*)val_ptr) = *self.mCurReadSD; + return true; +} diff --git a/indra/llui/llsdparam.h b/indra/llui/llsdparam.h index e028fc30c24b8bed72f800066213f76c823b8623..97e8b58e492bd61d574ad0b61e479d2e80f3a8cb 100644 --- a/indra/llui/llsdparam.h +++ b/indra/llui/llsdparam.h @@ -31,17 +31,14 @@ #include "llinitparam.h" class LLParamSDParser -: public LLInitParam::Parser, - public LLSingleton<LLParamSDParser> +: public LLInitParam::Parser { LOG_CLASS(LLParamSDParser); typedef LLInitParam::Parser parser_t; -protected: - LLParamSDParser(); - friend class LLSingleton<LLParamSDParser>; public: + LLParamSDParser(); void readSD(const LLSD& sd, LLInitParam::BaseBlock& block, bool silent = false); void writeSD(LLSD& sd, const LLInitParam::BaseBlock& block); @@ -51,20 +48,12 @@ typedef LLInitParam::Parser parser_t; void readSDValues(const LLSD& sd, LLInitParam::BaseBlock& block); template<typename T> - bool readTypedValue(void* val_ptr, boost::function<T(const LLSD&)> parser_func) - { - if (!mCurReadSD) return false; - - *((T*)val_ptr) = parser_func(*mCurReadSD); - return true; - } - - template<typename T> - bool writeTypedValue(const void* val_ptr, const parser_t::name_stack_t& name_stack) + static bool writeTypedValue(Parser& parser, const void* val_ptr, const parser_t::name_stack_t& name_stack) { - if (!mWriteSD) return false; + LLParamSDParser& sdparser = static_cast<LLParamSDParser&>(parser); + if (!sdparser.mWriteRootSD) return false; - LLSD* sd_to_write = getSDWriteNode(name_stack); + LLSD* sd_to_write = sdparser.getSDWriteNode(name_stack); if (!sd_to_write) return false; sd_to_write->assign(*((const T*)val_ptr)); @@ -73,12 +62,23 @@ typedef LLInitParam::Parser parser_t; LLSD* getSDWriteNode(const parser_t::name_stack_t& name_stack); - bool readSDParam(void* value_ptr); - bool writeU32Param(const void* value_ptr, const parser_t::name_stack_t& name_stack); + static bool writeU32Param(Parser& parser, const void* value_ptr, const parser_t::name_stack_t& name_stack); + + static bool readS32(Parser& parser, void* val_ptr); + static bool readU32(Parser& parser, void* val_ptr); + static bool readF32(Parser& parser, void* val_ptr); + static bool readF64(Parser& parser, void* val_ptr); + static bool readBool(Parser& parser, void* val_ptr); + static bool readString(Parser& parser, void* val_ptr); + static bool readUUID(Parser& parser, void* val_ptr); + static bool readDate(Parser& parser, void* val_ptr); + static bool readURI(Parser& parser, void* val_ptr); + static bool readSD(Parser& parser, void* val_ptr); Parser::name_stack_t mNameStack; const LLSD* mCurReadSD; - LLSD* mWriteSD; + LLSD* mWriteRootSD; + LLSD* mCurWriteSD; }; template<typename T> @@ -88,7 +88,8 @@ class LLSDParamAdapter : public T LLSDParamAdapter() {} LLSDParamAdapter(const LLSD& sd) { - LLParamSDParser::instance().readSD(sd, *this); + LLParamSDParser parser; + parser.readSD(sd, *this); } LLSDParamAdapter(const T& val) diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index e5dfecad5490037e45dd9a2308493a8ae8f1816e..1fa449a1827a1232d0ed8998019bc8230dcb92da 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -235,6 +235,7 @@ class LLTextBase public: friend class LLTextSegment; friend class LLNormalTextSegment; + friend class LLUICtrlFactory; struct LineSpacingParams : public LLInitParam::Choice<LineSpacingParams> { diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index b02d3122fe1592b94a97135a6177f0db1dc7923f..639003979479a4b90d9db9ee429ed43a0dbd880b 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -78,9 +78,9 @@ BOOL LLToolTipView::handleHover(S32 x, S32 y, MASK mask) LLToolTipMgr& tooltip_mgr = LLToolTipMgr::instance(); - if (x != last_x && y != last_y) + if (x != last_x && y != last_y && !tooltip_mgr.getMouseNearRect().pointInRect(x, y)) { - // allow new tooltips because mouse moved + // allow new tooltips because mouse moved outside of mouse near rect tooltip_mgr.unblockToolTips(); } @@ -276,8 +276,8 @@ void LLToolTip::initFromParams(const LLToolTip::Params& p) if (p.styled_message.isProvided()) { - for (LLInitParam::ParamIterator<LLToolTip::StyledText>::const_iterator text_it = p.styled_message().begin(); - text_it != p.styled_message().end(); + for (LLInitParam::ParamIterator<LLToolTip::StyledText>::const_iterator text_it = p.styled_message.begin(); + text_it != p.styled_message.end(); ++text_it) { mTextBox->appendText(text_it->text(), false, text_it->style); @@ -580,6 +580,7 @@ void LLToolTipMgr::updateToolTipVisibility() if (mToolTip->getVisibleTime() > tooltip_timeout) { hideToolTips(); + unblockToolTips(); } } } diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index d33d8e31785c83fe91f247046031d4d773fc43d9..ff9af21e545eb762ec7a33874532a2d4c7b590b0 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1796,7 +1796,8 @@ void LLUI::setupPaths() LLXMLNodePtr root; BOOL success = LLXMLNode::parseFile(filename, root, NULL); Paths paths; - LLXUIParser::instance().readXUI(root, paths, filename); + LLXUIParser parser; + parser.readXUI(root, paths, filename); sXUIPaths.clear(); @@ -1805,14 +1806,14 @@ void LLUI::setupPaths() LLStringUtil::format_map_t path_args; path_args["[LANGUAGE]"] = LLUI::getLanguage(); - for (LLInitParam::ParamIterator<Directory>::const_iterator it = paths.directories().begin(), - end_it = paths.directories().end(); + for (LLInitParam::ParamIterator<Directory>::const_iterator it = paths.directories.begin(), + end_it = paths.directories.end(); it != end_it; ++it) { std::string path_val_ui; - for (LLInitParam::ParamIterator<SubDir>::const_iterator subdir_it = it->subdirs().begin(), - subdir_end_it = it->subdirs().end(); + for (LLInitParam::ParamIterator<SubDir>::const_iterator subdir_it = it->subdirs.begin(), + subdir_end_it = it->subdirs.end(); subdir_it != subdir_end_it;) { path_val_ui += subdir_it->value(); diff --git a/indra/llui/lluicolortable.cpp b/indra/llui/lluicolortable.cpp index 9891e38f7b212aa9e53a2310c6d3b8b97e4d3342..0641f6d17588ffec708569846d0e40cf4569f080 100644 --- a/indra/llui/lluicolortable.cpp +++ b/indra/llui/lluicolortable.cpp @@ -56,8 +56,8 @@ void LLUIColorTable::insertFromParams(const Params& p, string_color_map_t& table typedef std::map<std::string, std::string> string_string_map_t; string_string_map_t unresolved_refs; - for(LLInitParam::ParamIterator<ColorEntryParams>::const_iterator it = p.color_entries().begin(); - it != p.color_entries().end(); + for(LLInitParam::ParamIterator<ColorEntryParams>::const_iterator it = p.color_entries.begin(); + it != p.color_entries.end(); ++it) { ColorEntryParams color_entry = *it; @@ -237,7 +237,8 @@ void LLUIColorTable::saveUserSettings() const } LLXMLNodePtr output_node = new LLXMLNode("colors", false); - LLXUIParser::instance().writeXUI(output_node, params); + LLXUIParser parser; + parser.writeXUI(output_node, params); if(!output_node->isNull()) { @@ -303,7 +304,8 @@ bool LLUIColorTable::loadFromFilename(const std::string& filename, string_color_ } Params params; - LLXUIParser::instance().readXUI(root, params, filename); + LLXUIParser parser; + parser.readXUI(root, params, filename); if(params.validateBlock()) { diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp index 15a382660ec5a6f06ddc5540605a50114e7feb54..5de96f9d48a0eaf588dffb5acdcf0fea50664256 100644 --- a/indra/llui/lluictrlfactory.cpp +++ b/indra/llui/lluictrlfactory.cpp @@ -42,7 +42,7 @@ #include "llquaternion.h" // this library includes -#include "llfloater.h" +#include "llpanel.h" LLFastTimer::DeclareTimer FTM_WIDGET_CONSTRUCTION("Widget Construction"); LLFastTimer::DeclareTimer FTM_INIT_FROM_PARAMS("Widget InitFromParams"); @@ -93,10 +93,12 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa std::string filename = std::string("widgets") + gDirUtilp->getDirDelimiter() + widget_tag + ".xml"; LLXMLNodePtr root_node; - if (LLUICtrlFactory::getLayeredXMLNode(filename, root_node)) + std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getXUIPaths().front(), filename); + if (!full_filename.empty()) { - LLUICtrlFactory::instance().pushFileName(filename); - LLXUIParser::instance().readXUI(root_node, block, filename); + LLUICtrlFactory::instance().pushFileName(full_filename); + LLSimpleXUIParser parser; + parser.readXUI(full_filename, block); LLUICtrlFactory::instance().popFileName(); } } @@ -171,70 +173,6 @@ bool LLUICtrlFactory::getLocalizedXMLNode(const std::string &xui_filename, LLXML } } -static LLFastTimer::DeclareTimer FTM_BUILD_FLOATERS("Build Floaters"); - -//----------------------------------------------------------------------------- -// buildFloater() -//----------------------------------------------------------------------------- -bool LLUICtrlFactory::buildFloater(LLFloater* floaterp, const std::string& filename, LLXMLNodePtr output_node) -{ - LLFastTimer timer(FTM_BUILD_FLOATERS); - LLXMLNodePtr 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 false; - } - } - else if (!LLUICtrlFactory::getLayeredXMLNode(filename, root)) - { - llwarns << "Couldn't parse floater from: " << LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + filename << llendl; - return false; - } - - // root must be called floater - if( !(root->hasName("floater") || root->hasName("multi_floater")) ) - { - llwarns << "Root node should be named floater in: " << filename << llendl; - return false; - } - - bool res = true; - - lldebugs << "Building floater " << filename << llendl; - pushFileName(filename); - { - if (!floaterp->getFactoryMap().empty()) - { - mFactoryStack.push_front(&floaterp->getFactoryMap()); - } - - // for local registry callbacks; define in constructor, referenced in XUI or postBuild - floaterp->getCommitCallbackRegistrar().pushScope(); - floaterp->getEnableCallbackRegistrar().pushScope(); - - res = floaterp->initFloaterXML(root, floaterp->getParent(), filename, output_node); - - floaterp->setXMLFilename(filename); - - floaterp->getCommitCallbackRegistrar().popScope(); - floaterp->getEnableCallbackRegistrar().popScope(); - - if (!floaterp->getFactoryMap().empty()) - { - mFactoryStack.pop_front(); - } - } - popFileName(); - - return res; -} - //----------------------------------------------------------------------------- // saveToXML() //----------------------------------------------------------------------------- @@ -243,69 +181,6 @@ S32 LLUICtrlFactory::saveToXML(LLView* viewp, const std::string& filename) return 0; } -static LLFastTimer::DeclareTimer FTM_BUILD_PANELS("Build Panels"); - -//----------------------------------------------------------------------------- -// buildPanel() -//----------------------------------------------------------------------------- -BOOL LLUICtrlFactory::buildPanel(LLPanel* panelp, const std::string& filename, LLXMLNodePtr output_node) -{ - LLFastTimer timer(FTM_BUILD_PANELS); - BOOL didPost = FALSE; - LLXMLNodePtr 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; - } - - // root must be called panel - if( !root->hasName("panel" ) ) - { - llwarns << "Root node should be named panel in : " << filename << llendl; - return didPost; - } - - lldebugs << "Building panel " << filename << llendl; - - pushFileName(filename); - { - if (!panelp->getFactoryMap().empty()) - { - 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(); - - panelp->setXMLFilename(filename); - - if (!panelp->getFactoryMap().empty()) - { - mFactoryStack.pop_front(); - } - } - popFileName(); - return didPost; -} - //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- @@ -337,29 +212,6 @@ LLView *LLUICtrlFactory::createFromXML(LLXMLNodePtr node, LLView* parent, const return view; } -//----------------------------------------------------------------------------- -// createFactoryPanel() -//----------------------------------------------------------------------------- -LLPanel* LLUICtrlFactory::createFactoryPanel(const std::string& name) -{ - std::deque<const LLCallbackMap::map_t*>::iterator itor; - for (itor = mFactoryStack.begin(); itor != mFactoryStack.end(); ++itor) - { - const LLCallbackMap::map_t* factory_map = *itor; - - // Look up this panel's name in the map. - LLCallbackMap::map_const_iter_t iter = factory_map->find( name ); - if (iter != factory_map->end()) - { - // Use the factory to create the panel, instead of using a default LLPanel. - LLPanel *ret = (LLPanel*) iter->second.mCallback( iter->second.mData ); - return ret; - } - } - LLPanel::Params panel_p; - return create<LLPanel>(panel_p); -} - std::string LLUICtrlFactory::getCurFileName() { return mFileNames.empty() ? "" : gDirUtilp->getWorkingDir() + gDirUtilp->getDirDelimiter() + mFileNames.back(); @@ -376,36 +228,6 @@ void LLUICtrlFactory::popFileName() mFileNames.pop_back(); } - -//----------------------------------------------------------------------------- - -//static -BOOL LLUICtrlFactory::getAttributeColor(LLXMLNodePtr node, const std::string& name, LLColor4& color) -{ - std::string colorstring; - BOOL res = node->getAttributeString(name.c_str(), colorstring); - if (res) - { - if (LLUIColorTable::instance().colorExists(colorstring)) - { - color.setVec(LLUIColorTable::instance().getColor(colorstring)); - } - else - { - res = FALSE; - } - } - if (!res) - { - res = LLColor4::parseColor(colorstring, &color); - } - if (!res) - { - res = node->getAttributeColor(name.c_str(), color); - } - return res; -} - //static void LLUICtrlFactory::setCtrlParent(LLView* view, LLView* parent, S32 tab_group) { @@ -421,28 +243,22 @@ std::string LLUICtrlFactory::findSkinnedFilename(const std::string& filename) return gDirUtilp->findSkinnedFilename(LLUI::getSkinPath(), filename); } -void LLUICtrlFactory::pushFactoryFunctions(const LLCallbackMap::map_t* map) -{ - mFactoryStack.push_back(map); -} - -void LLUICtrlFactory::popFactoryFunctions() -{ - if (!mFactoryStack.empty()) - { - mFactoryStack.pop_back(); - } -} - //static void LLUICtrlFactory::copyName(LLXMLNodePtr src, LLXMLNodePtr dest) { dest->setName(src->getName()->mString); } +template<typename T> +const LLInitParam::BaseBlock& get_empty_param_block() +{ + static typename T::Params params; + return params; +} + // adds a widget and its param block to various registries //static -void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const std::type_info* param_block_type, dummy_widget_creator_func_t creator_func, const std::string& tag) +void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const std::type_info* param_block_type, const std::string& tag) { // associate parameter block type with template .xml file std::string* existing_tag = LLWidgetNameRegistry::instance().getValue(param_block_type); @@ -462,17 +278,9 @@ void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const st } } LLWidgetNameRegistry::instance().defaultRegistrar().add(param_block_type, tag); - // associate widget type with factory function - LLDefaultWidgetRegistry::instance().defaultRegistrar().add(widget_type, creator_func); //FIXME: comment this in when working on schema generation //LLWidgetTypeRegistry::instance().defaultRegistrar().add(tag, widget_type); - //LLDefaultParamBlockRegistry::instance().defaultRegistrar().add(widget_type, &getEmptyParamBlock<T>); -} - -//static -dummy_widget_creator_func_t* LLUICtrlFactory::getDefaultWidgetFunc(const std::type_info* widget_type) -{ - return LLDefaultWidgetRegistry::instance().getValue(widget_type); + //LLDefaultParamBlockRegistry::instance().defaultRegistrar().add(widget_type, &get_empty_param_block<T>); } //static diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h index 58ec5d8387208635a3fb2b35a42d35c69e25c8a0..499b97f52d4db7f7dfa9bd75c13e70fea9671fff 100644 --- a/indra/llui/lluictrlfactory.h +++ b/indra/llui/lluictrlfactory.h @@ -27,24 +27,13 @@ #ifndef LLUICTRLFACTORY_H #define LLUICTRLFACTORY_H -#include "llcallbackmap.h" +#include "llfasttimer.h" #include "llinitparam.h" #include "llregistry.h" -#include "v4color.h" -#include "llfasttimer.h" - #include "llxuiparser.h" -#include <boost/function.hpp> -#include <iosfwd> -#include <stack> -#include <set> - -class LLPanel; -class LLFloater; class LLView; - // sort functor for typeid maps struct LLCompareTypeID { @@ -85,12 +74,6 @@ class LLWidgetNameRegistry : public LLRegistrySingleton<const std::type_info*, std::string, LLWidgetNameRegistry , LLCompareTypeID> {}; -// lookup factory functions for default widget instances by widget type -typedef LLView* (*dummy_widget_creator_func_t)(const std::string&); -class LLDefaultWidgetRegistry -: public LLRegistrySingleton<const std::type_info*, dummy_widget_creator_func_t, LLDefaultWidgetRegistry, LLCompareTypeID> -{}; - // lookup function for generating empty param block by widget type // this is used for schema generation //typedef const LLInitParam::BaseBlock& (*empty_param_block_func_t)(); @@ -157,58 +140,21 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> return ParamDefaults<typename T::Params, 0>::instance().get(); } - bool buildFloater(LLFloater* floaterp, const std::string &filename, LLXMLNodePtr output_node); - BOOL buildPanel(LLPanel* panelp, const std::string &filename, LLXMLNodePtr output_node = NULL); - // Does what you want for LLFloaters and LLPanels // Returns 0 on success S32 saveToXML(LLView* viewp, const std::string& filename); + // filename tracking for debugging info std::string getCurFileName(); void pushFileName(const std::string& name); void popFileName(); - static BOOL getAttributeColor(LLXMLNodePtr node, const std::string& name, LLColor4& color); - - LLPanel* createFactoryPanel(const std::string& name); - - void pushFactoryFunctions(const LLCallbackMap::map_t* map); - void popFactoryFunctions(); - - template<typename T> - static T* createWidget(const typename T::Params& params, LLView* parent = NULL) - { - T* widget = NULL; - - if (!params.validateBlock()) - { - llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl; - //return NULL; - } - - { - LLFastTimer timer(FTM_WIDGET_CONSTRUCTION); - widget = new T(params); - } - { - LLFastTimer timer(FTM_INIT_FROM_PARAMS); - widget->initFromParams(params); - } - - if (parent) - { - S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : S32_MAX; - setCtrlParent(widget, parent, tab_group); - } - return widget; - } - template<typename T> static T* create(typename T::Params& params, LLView* parent = NULL) { params.fillFrom(ParamDefaults<typename T::Params, 0>::instance().get()); - T* widget = createWidget<T>(params, parent); + T* widget = createWidgetImpl<T>(params, parent); if (widget) { widget->postBuild(); @@ -266,21 +212,54 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> template<class T> static T* getDefaultWidget(const std::string& name) { - dummy_widget_creator_func_t* dummy_func = getDefaultWidgetFunc(&typeid(T)); - return dummy_func ? dynamic_cast<T*>((*dummy_func)(name)) : NULL; + typename T::Params widget_params; + widget_params.name = name; + return create<T>(widget_params); } - template <class T> - static LLView* createDefaultWidget(const std::string& name) - { - typename T::Params params; - params.name(name); - - return create<T>(params); - } + static void createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t&, LLXMLNodePtr output_node = NULL); + + static bool getLayeredXMLNode(const std::string &filename, LLXMLNodePtr& root); + static bool getLocalizedXMLNode(const std::string &xui_filename, LLXMLNodePtr& root); + +private: + //NOTE: both friend declarations are necessary to keep both gcc and msvc happy + template <typename T> friend class LLChildRegistry; + template <typename T> template <typename U> friend class LLChildRegistry<T>::Register; static void copyName(LLXMLNodePtr src, LLXMLNodePtr dest); + // helper function for adding widget type info to various registries + static void registerWidget(const std::type_info* widget_type, const std::type_info* param_block_type, const std::string& tag); + + static void loadWidgetTemplate(const std::string& widget_tag, LLInitParam::BaseBlock& block); + + template<typename T> + static T* createWidgetImpl(const typename T::Params& params, LLView* parent = NULL) + { + T* widget = NULL; + + if (!params.validateBlock()) + { + llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl; + //return NULL; + } + + { LLFastTimer _(FTM_WIDGET_CONSTRUCTION); + widget = new T(params); + } + { LLFastTimer _(FTM_INIT_FROM_PARAMS); + widget->initFromParams(params); + } + + if (parent) + { + S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : S32_MAX; + setCtrlParent(widget, parent, tab_group); + } + return widget; + } + template<typename T> static T* defaultBuilder(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node) { @@ -288,7 +267,8 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> typename T::Params params(getDefaultParams<T>()); - LLXUIParser::instance().readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); + LLXUIParser parser; + parser.readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName()); if (output_node) { @@ -298,14 +278,13 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> // Export only the differences between this any default params typename T::Params default_params(getDefaultParams<T>()); copyName(node, output_node); - LLXUIParser::instance().writeXUI( - output_node, output_params, &default_params); + parser.writeXUI(output_node, output_params, &default_params); } // Apply layout transformations, usually munging rect params.from_xui = true; T::applyXUILayout(params, parent); - T* widget = createWidget<T>(params, parent); + T* widget = createWidgetImpl<T>(params, parent); typedef typename T::child_registry_t registry_t; @@ -320,20 +299,6 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> return widget; } - static void createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t&, 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); - - // helper function for adding widget type info to various registries - static void registerWidget(const std::type_info* widget_type, const std::type_info* param_block_type, dummy_widget_creator_func_t creator_func, const std::string& tag); - -private: - // return default widget instance factory func for a given type - static dummy_widget_creator_func_t* getDefaultWidgetFunc(const std::type_info* widget_type); static const std::string* getWidgetTag(const std::type_info* widget_type); @@ -343,20 +308,10 @@ class LLUICtrlFactory : public LLSingleton<LLUICtrlFactory> // Avoid directly using LLUI and LLDir in the template code static std::string findSkinnedFilename(const std::string& filename); - typedef std::deque<const LLCallbackMap::map_t*> factory_stack_t; - factory_stack_t mFactoryStack; - - LLPanel* mDummyPanel; + class LLPanel* mDummyPanel; std::vector<std::string> mFileNames; }; -template<typename T> -const LLInitParam::BaseBlock& getEmptyParamBlock() -{ - static typename T::Params params; - return params; -} - // this is here to make gcc happy with reference to LLUICtrlFactory template<typename DERIVED> template<typename T> @@ -364,7 +319,7 @@ LLChildRegistry<DERIVED>::Register<T>::Register(const char* tag, LLWidgetCreator : LLChildRegistry<DERIVED>::StaticRegistrar(tag, func.empty() ? (LLWidgetCreatorFunc)&LLUICtrlFactory::defaultBuilder<T> : func) { // add this widget to various registries - LLUICtrlFactory::instance().registerWidget(&typeid(T), &typeid(typename T::Params), &LLUICtrlFactory::createDefaultWidget<T>, tag); + LLUICtrlFactory::instance().registerWidget(&typeid(T), &typeid(typename T::Params), tag); // since registry_t depends on T, do this in line here // TODO: uncomment this for schema generation @@ -372,58 +327,4 @@ LLChildRegistry<DERIVED>::Register<T>::Register(const char* tag, LLWidgetCreator //LLChildRegistryRegistry::instance().defaultRegistrar().add(&typeid(T), registry_t::instance()); } - -typedef boost::function<LLPanel* (void)> LLPanelClassCreatorFunc; - -// 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,LLPanelClassCreatorFunc func) - { - mPanelClassesNames[tag] = func; - } - - LLPanel* createPanelClass(const std::string& tag) - { - param_name_map_t::iterator iT = mPanelClassesNames.find(tag); - if(iT == mPanelClassesNames.end()) - return 0; - return iT->second(); - } - template<typename T> - static T* defaultPanelClassBuilder() - { - T* pT = new T(); - return pT; - } - -private: - typedef std::map< std::string, LLPanelClassCreatorFunc> param_name_map_t; - - param_name_map_t mPanelClassesNames; -}; - - -// 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>); -} - - #endif //LLUICTRLFACTORY_H diff --git a/indra/llui/lluistring.cpp b/indra/llui/lluistring.cpp index 3e9b956ee6cdc50ffabd4e263a5cab44caf0937d..ac69d3bf8513074cb22fd7519aae0823217cd442 100644 --- a/indra/llui/lluistring.cpp +++ b/indra/llui/lluistring.cpp @@ -34,7 +34,7 @@ LLFastTimer::DeclareTimer FTM_UI_STRING("UI String"); LLUIString::LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args) : mOrig(instring), - mArgs(args) + mArgs(new LLStringUtil::format_map_t(args)) { dirty(); } @@ -48,7 +48,7 @@ void LLUIString::assign(const std::string& s) void LLUIString::setArgList(const LLStringUtil::format_map_t& args) { - mArgs = args; + getArgs() = args; dirty(); } @@ -68,7 +68,7 @@ void LLUIString::setArgs(const LLSD& sd) void LLUIString::setArg(const std::string& key, const std::string& replacement) { - mArgs[key] = replacement; + getArgs()[key] = replacement; dirty(); } @@ -129,14 +129,14 @@ void LLUIString::updateResult() const mResult = mOrig; // get the defailt args + local args - if (mArgs.empty()) + if (!mArgs || mArgs->empty()) { LLStringUtil::format(mResult, LLTrans::getDefaultArgs()); } else { LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs(); - combined_args.insert(mArgs.begin(), mArgs.end()); + combined_args.insert(mArgs->begin(), mArgs->end()); LLStringUtil::format(mResult, combined_args); } } @@ -147,3 +147,12 @@ void LLUIString::updateWResult() const mWResult = utf8str_to_wstring(getUpdatedResult()); } + +LLStringUtil::format_map_t& LLUIString::getArgs() +{ + if (!mArgs) + { + mArgs = new LLStringUtil::format_map_t; + } + return *mArgs; +} diff --git a/indra/llui/lluistring.h b/indra/llui/lluistring.h index fc7ac37d99090d6ca7f95c4d1df41296c397b184..eff2467bf0a2bf6e5c86c94313eae387735ce1fb 100644 --- a/indra/llui/lluistring.h +++ b/indra/llui/lluistring.h @@ -58,9 +58,9 @@ class LLUIString public: // These methods all perform appropriate argument substitution // and modify mOrig where appropriate - LLUIString() : mNeedsResult(false), mNeedsWResult(false) {} + LLUIString() : mArgs(NULL), mNeedsResult(false), mNeedsWResult(false) {} LLUIString(const std::string& instring, const LLStringUtil::format_map_t& args); - LLUIString(const std::string& instring) { assign(instring); } + LLUIString(const std::string& instring) : mArgs(NULL) { assign(instring); } void assign(const std::string& instring); LLUIString& operator=(const std::string& s) { assign(s); return *this; } @@ -80,7 +80,7 @@ class LLUIString S32 length() const { return getUpdatedWResult().size(); } void clear(); - void clearArgs() { mArgs.clear(); } + void clearArgs() { if (mArgs) mArgs->clear(); } // These utility functions are included for text editing. // They do not affect mOrig and do not perform argument substitution @@ -99,11 +99,12 @@ class LLUIString // do actual work of updating strings (non-inlined) void updateResult() const; void updateWResult() const; + LLStringUtil::format_map_t& getArgs(); std::string mOrig; mutable std::string mResult; mutable LLWString mWResult; // for displaying - LLStringUtil::format_map_t mArgs; + LLStringUtil::format_map_t* mArgs; // controls lazy evaluation mutable bool mNeedsResult; diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index fe5ef269a9be23c36d41f20db24359fd88151190..3fa86bf0ca519325c0ccca9ad9bdb2f02a23ca60 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -102,11 +102,7 @@ LLView::Params::Params() left_pad("left_pad"), left_delta("left_delta", S32_MAX), from_xui("from_xui", false), - user_resize("user_resize"), - auto_resize("auto_resize"), needs_translate("translate"), - min_width("min_width"), - max_width("max_width"), xmlns("xmlns"), xmlns_xsi("xmlns:xsi"), xsi_schemaLocation("xsi:schemaLocation"), @@ -218,7 +214,7 @@ void LLView::setUseBoundingRect( BOOL use_bounding_rect ) } } -BOOL LLView::getUseBoundingRect() +BOOL LLView::getUseBoundingRect() const { return mUseBoundingRect; } @@ -1370,12 +1366,12 @@ void LLView::drawDebugRect() // drawing solids requires texturing be disabled gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - if (mUseBoundingRect) + if (getUseBoundingRect()) { LLUI::translate((F32)mBoundingRect.mLeft - (F32)mRect.mLeft, (F32)mBoundingRect.mBottom - (F32)mRect.mBottom, 0.f); } - LLRect debug_rect = mUseBoundingRect ? mBoundingRect : mRect; + LLRect debug_rect = getUseBoundingRect() ? mBoundingRect : mRect; // draw red rectangle for the border LLColor4 border_color(0.25f, 0.25f, 0.25f, 1.f); @@ -1573,7 +1569,7 @@ void LLView::updateBoundingRect() LLRect cur_rect = mBoundingRect; - if (mUseBoundingRect) + if (getUseBoundingRect()) { mBoundingRect = calcBoundingRect(); } @@ -1583,7 +1579,7 @@ void LLView::updateBoundingRect() } // give parent view a chance to resize, in case we just moved, for example - if (getParent() && getParent()->mUseBoundingRect) + if (getParent() && getParent()->getUseBoundingRect()) { getParent()->updateBoundingRect(); } @@ -1607,7 +1603,7 @@ LLRect LLView::calcScreenBoundingRect() const { LLRect screen_rect; // get bounding rect, if used - LLRect bounding_rect = mUseBoundingRect ? mBoundingRect : mRect; + LLRect bounding_rect = getUseBoundingRect() ? mBoundingRect : mRect; // convert to local coordinates, as defined by mRect bounding_rect.translate(-mRect.mLeft, -mRect.mBottom); @@ -1692,7 +1688,9 @@ LLView* LLView::getChildView(const std::string& name, BOOL recurse) const child = getDefaultWidget<LLView>(name); if (!child) { - child = LLUICtrlFactory::createDefaultWidget<LLView>(name); + LLView::Params view_params; + view_params.name = name; + child = LLUICtrlFactory::create<LLView>(view_params); } } return child; @@ -1736,14 +1734,14 @@ LLView* LLView::findChildView(const std::string& name, BOOL recurse) const BOOL LLView::parentPointInView(S32 x, S32 y, EHitTestType type) const { - return (mUseBoundingRect && type == HIT_TEST_USE_BOUNDING_RECT) + return (getUseBoundingRect() && type == HIT_TEST_USE_BOUNDING_RECT) ? mBoundingRect.pointInRect( x, y ) : mRect.pointInRect( x, y ); } BOOL LLView::pointInView(S32 x, S32 y, EHitTestType type) const { - return (mUseBoundingRect && type == HIT_TEST_USE_BOUNDING_RECT) + return (getUseBoundingRect() && type == HIT_TEST_USE_BOUNDING_RECT) ? mBoundingRect.pointInRect( x + mRect.mLeft, y + mRect.mBottom ) : mRect.localPointInRect( x, y ); } diff --git a/indra/llui/llview.h b/indra/llui/llview.h index f7175112bff5805219bf047f7ceedc8796adb251..33d345beff50bb9329fa00996e1b010c9c17889e 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -128,26 +128,22 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem Optional<std::string> layout; Optional<LLRect> rect; + // 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 - - // these are nested attributes for LLLayoutPanel + Optional<S32> bottom_delta, // from last bottom to my bottom + 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 + //FIXME: get parent context involved in parsing traversal - Ignored user_resize, - auto_resize, - needs_translate, - min_width, - max_width, - xmlns, - xmlns_xsi, - xsi_schemaLocation, - xsi_type; + Ignored needs_translate, // cue for translation tools + xmlns, // xml namespace + xmlns_xsi, // xml namespace + xsi_schemaLocation, // xml schema + xsi_type; // xml schema type Params(); }; @@ -238,7 +234,7 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem void setSoundFlags(U8 flags) { mSoundFlags = flags; } void setName(std::string name) { mName = name; } void setUseBoundingRect( BOOL use_bounding_rect ); - BOOL getUseBoundingRect(); + BOOL getUseBoundingRect() const; ECursorType getHoverCursor() { return mHoverCursor; } @@ -277,6 +273,11 @@ class LLView : public LLMouseHandler, public LLMortician, public LLFocusableElem BOOL focusNextRoot(); BOOL focusPrevRoot(); + // Normally we want the app menus to get priority on accelerated keys + // However, sometimes we want to give specific views a first chance + // iat handling them. (eg. the script editor) + virtual bool hasAccelerators() const { return false; }; + // delete all children. Override this function if you need to // perform any extra clean up such as cached pointers to selected // children, etc. diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp index 6ccac45569aacbd545b84db17bc02f24d760f5ab..a1c6669b974952ea329b9e1dcbb9abd2da09f27b 100644 --- a/indra/llvfs/lldir_linux.cpp +++ b/indra/llvfs/lldir_linux.cpp @@ -93,7 +93,7 @@ LLDir_Linux::LLDir_Linux() #else mAppRODataDir = tmp_str; #endif - U32 indra_pos = mExecutableDir.find("/indra"); + std::string::size_type indra_pos = mExecutableDir.find("/indra"); if (indra_pos != std::string::npos) { // ...we're in a dev checkout diff --git a/indra/llvfs/lldir_win32.cpp b/indra/llvfs/lldir_win32.cpp index 8b1a2ddd3c52ce0fac9925d57c65d833849120b5..52d864e26f2cee313dbb98e6c3e0af98b9b1d614 100644 --- a/indra/llvfs/lldir_win32.cpp +++ b/indra/llvfs/lldir_win32.cpp @@ -116,10 +116,6 @@ LLDir_Win32::LLDir_Win32() mExecutableDir = utf16str_to_utf8str(llutf16string(w_str)); #endif - mAppRODataDir = "."; - - mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; - if (mExecutableDir.find("indra") == std::string::npos) { // Running from installed directory. Make sure current @@ -129,8 +125,12 @@ LLDir_Win32::LLDir_Win32() GetCurrentDirectory(MAX_PATH, w_str); mWorkingDir = utf16str_to_utf8str(llutf16string(w_str)); } + mAppRODataDir = mWorkingDir; + llinfos << "mAppRODataDir = " << mAppRODataDir << llendl; + mSkinBaseDir = mAppRODataDir + mDirDelimiter + "skins"; + // Build the default cache directory mDefaultCacheDir = buildSLOSCacheDir(); diff --git a/indra/llxuixml/llinitparam.cpp b/indra/llxuixml/llinitparam.cpp index 0b324a10c992ff8b48d8babbed8718b186ed40a3..2c92539387a98560b616785c464b77aa0adf0b11 100644 --- a/indra/llxuixml/llinitparam.cpp +++ b/indra/llxuixml/llinitparam.cpp @@ -68,7 +68,6 @@ namespace LLInitParam void BlockDescriptor::aggregateBlockData(BlockDescriptor& src_block_data) { mNamedParams.insert(src_block_data.mNamedParams.begin(), src_block_data.mNamedParams.end()); - mSynonyms.insert(src_block_data.mSynonyms.begin(), src_block_data.mSynonyms.end()); std::copy(src_block_data.mUnnamedParams.begin(), src_block_data.mUnnamedParams.end(), std::back_inserter(mUnnamedParams)); std::copy(src_block_data.mValidationList.begin(), src_block_data.mValidationList.end(), std::back_inserter(mValidationList)); std::copy(src_block_data.mAllParams.begin(), src_block_data.mAllParams.end(), std::back_inserter(mAllParams)); @@ -78,8 +77,7 @@ namespace LLInitParam // BaseBlock // BaseBlock::BaseBlock() - : mChangeVersion(0), - mBlockDescriptor(NULL) + : mChangeVersion(0) {} BaseBlock::~BaseBlock() @@ -88,8 +86,6 @@ namespace LLInitParam // called by each derived class in least to most derived order void BaseBlock::init(BlockDescriptor& descriptor, BlockDescriptor& base_descriptor, size_t block_size) { - mBlockDescriptor = &descriptor; - descriptor.mCurrentBlockPtr = this; descriptor.mMaxParamOffset = block_size; @@ -182,7 +178,7 @@ namespace LLInitParam param_handle_t param_handle = it->second->mParamHandle; const Param* param = getParamFromHandle(param_handle); ParamDescriptor::serialize_func_t serialize_func = it->second->mSerializeFunc; - if (serialize_func) + if (serialize_func && param->anyProvided()) { // Ensure this param has not already been serialized // Prevents <rect> from being serialized as its own tag. @@ -274,22 +270,6 @@ namespace LLInitParam } } - for(BlockDescriptor::param_map_t::const_iterator it = block_data.mSynonyms.begin(); - it != block_data.mSynonyms.end(); - ++it) - { - param_handle_t param_handle = it->second->mParamHandle; - const Param* param = getParamFromHandle(param_handle); - ParamDescriptor::inspect_func_t inspect_func = it->second->mInspectFunc; - if (inspect_func) - { - // use existing serial number for param - name_stack.push_back(std::make_pair(it->first, it->second->mGeneration)); - inspect_func(*param, parser, name_stack, it->second->mMinCount, it->second->mMaxCount); - name_stack.pop_back(); - } - } - return true; } @@ -311,22 +291,9 @@ namespace LLInitParam // find pointer to member parameter from offset table paramp = getParamFromHandle(found_it->second->mParamHandle); deserialize_func = found_it->second->mDeserializeFunc; - } - else - { - BlockDescriptor::param_map_t::iterator found_it = block_data.mSynonyms.find(top_name); - if (found_it != block_data.mSynonyms.end()) - { - // find pointer to member parameter from offset table - paramp = getParamFromHandle(found_it->second->mParamHandle); - deserialize_func = found_it->second->mDeserializeFunc; - } - } - Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second); - ++new_name_stack.first; - if (deserialize_func) - { + Parser::name_stack_range_t new_name_stack(name_stack.first, name_stack.second); + ++new_name_stack.first; return deserialize_func(*paramp, p, new_name_stack, name_stack.first == name_stack.second ? -1 : name_stack.first->second); } } @@ -401,7 +368,7 @@ namespace LLInitParam } else { - block_data.mSynonyms[synonym] = param_descriptor; + block_data.mNamedParams[synonym] = param_descriptor; } } } @@ -426,14 +393,6 @@ namespace LLInitParam } } - for (BlockDescriptor::param_map_t::const_iterator it = block_data.mSynonyms.begin(); it != block_data.mSynonyms.end(); ++it) - { - if (it->second->mParamHandle == handle) - { - return it->first; - } - } - return LLStringUtil::null; } diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h index 869b0c2cd65f103ceb6d9f5c62aa16bc715b4574..8cb5bd80fc93a0f3f95b949911964d291ac7b665 100644 --- a/indra/llxuixml/llinitparam.h +++ b/indra/llxuixml/llinitparam.h @@ -34,6 +34,7 @@ f * @file llinitparam.h #include <boost/function.hpp> #include <boost/bind.hpp> #include <boost/type_traits/is_convertible.hpp> +#include <boost/unordered_map.hpp> #include "llregistry.h" #include "llmemory.h" @@ -196,36 +197,39 @@ namespace LLInitParam typedef std::pair<name_stack_t::const_iterator, name_stack_t::const_iterator> name_stack_range_t; typedef std::vector<std::string> possible_values_t; - typedef boost::function<bool (void*)> parser_read_func_t; - typedef boost::function<bool (const void*, const name_stack_t&)> parser_write_func_t; + typedef bool (*parser_read_func_t)(Parser& parser, void* output); + typedef bool (*parser_write_func_t)(Parser& parser, const void*, const name_stack_t&); typedef boost::function<void (const name_stack_t&, S32, S32, const possible_values_t*)> parser_inspect_func_t; typedef std::map<const std::type_info*, parser_read_func_t, CompareTypeID> parser_read_func_map_t; typedef std::map<const std::type_info*, parser_write_func_t, CompareTypeID> parser_write_func_map_t; typedef std::map<const std::type_info*, parser_inspect_func_t, CompareTypeID> parser_inspect_func_map_t; - Parser() + Parser(parser_read_func_map_t& read_map, parser_write_func_map_t& write_map, parser_inspect_func_map_t& inspect_map) : mParseSilently(false), - mParseGeneration(0) + mParseGeneration(0), + mParserReadFuncs(&read_map), + mParserWriteFuncs(&write_map), + mParserInspectFuncs(&inspect_map) {} virtual ~Parser(); template <typename T> bool readValue(T& param) { - parser_read_func_map_t::iterator found_it = mParserReadFuncs.find(&typeid(T)); - if (found_it != mParserReadFuncs.end()) + parser_read_func_map_t::iterator found_it = mParserReadFuncs->find(&typeid(T)); + if (found_it != mParserReadFuncs->end()) { - return found_it->second((void*)¶m); + return found_it->second(*this, (void*)¶m); } return false; } template <typename T> bool writeValue(const T& param, const name_stack_t& name_stack) { - parser_write_func_map_t::iterator found_it = mParserWriteFuncs.find(&typeid(T)); - if (found_it != mParserWriteFuncs.end()) + parser_write_func_map_t::iterator found_it = mParserWriteFuncs->find(&typeid(T)); + if (found_it != mParserWriteFuncs->end()) { - return found_it->second((const void*)¶m, name_stack); + return found_it->second(*this, (const void*)¶m, name_stack); } return false; } @@ -233,8 +237,8 @@ namespace LLInitParam // dispatch inspection to registered inspection functions, for each parameter in a param block template <typename T> bool inspectValue(const name_stack_t& name_stack, S32 min_count, S32 max_count, const possible_values_t* possible_values) { - parser_inspect_func_map_t::iterator found_it = mParserInspectFuncs.find(&typeid(T)); - if (found_it != mParserInspectFuncs.end()) + parser_inspect_func_map_t::iterator found_it = mParserInspectFuncs->find(&typeid(T)); + if (found_it != mParserInspectFuncs->end()) { found_it->second(name_stack, min_count, max_count, possible_values); return true; @@ -246,7 +250,6 @@ namespace LLInitParam virtual void parserWarning(const std::string& message); virtual void parserError(const std::string& message); void setParseSilently(bool silent) { mParseSilently = silent; } - bool getParseSilently() { return mParseSilently; } S32 getParseGeneration() { return mParseGeneration; } S32 newParseGeneration() { return ++mParseGeneration; } @@ -254,24 +257,24 @@ namespace LLInitParam protected: template <typename T> - void registerParserFuncs(parser_read_func_t read_func, parser_write_func_t write_func) + void registerParserFuncs(parser_read_func_t read_func, parser_write_func_t write_func = NULL) { - mParserReadFuncs.insert(std::make_pair(&typeid(T), read_func)); - mParserWriteFuncs.insert(std::make_pair(&typeid(T), write_func)); + mParserReadFuncs->insert(std::make_pair(&typeid(T), read_func)); + mParserWriteFuncs->insert(std::make_pair(&typeid(T), write_func)); } template <typename T> void registerInspectFunc(parser_inspect_func_t inspect_func) { - mParserInspectFuncs.insert(std::make_pair(&typeid(T), inspect_func)); + mParserInspectFuncs->insert(std::make_pair(&typeid(T), inspect_func)); } bool mParseSilently; private: - parser_read_func_map_t mParserReadFuncs; - parser_write_func_map_t mParserWriteFuncs; - parser_inspect_func_map_t mParserInspectFuncs; + parser_read_func_map_t* mParserReadFuncs; + parser_write_func_map_t* mParserWriteFuncs; + parser_inspect_func_map_t* mParserInspectFuncs; S32 mParseGeneration; }; @@ -284,7 +287,7 @@ namespace LLInitParam void setProvided(bool is_provided) { mIsProvided = is_provided; } protected: - bool getProvided() const { return mIsProvided; } + bool anyProvided() const { return mIsProvided; } Param(class BaseBlock* enclosing_block); @@ -380,14 +383,13 @@ namespace LLInitParam void aggregateBlockData(BlockDescriptor& src_block_data); public: - typedef std::map<const std::string, ParamDescriptor*> param_map_t; // references param descriptors stored in mAllParams + typedef boost::unordered_map<const std::string, ParamDescriptor*> param_map_t; // references param descriptors stored in mAllParams typedef std::vector<ParamDescriptor*> param_list_t; typedef std::list<ParamDescriptor> all_params_list_t;// references param descriptors stored in mAllParams typedef std::vector<std::pair<param_handle_t, ParamDescriptor::validation_func_t> > param_validation_list_t; param_map_t mNamedParams; // parameters with associated names - param_map_t mSynonyms; // parameters with alternate names param_list_t mUnnamedParams; // parameters with_out_ associated names param_validation_list_t mValidationList; // parameters that must be validated all_params_list_t mAllParams; // all parameters, owns descriptors @@ -473,8 +475,8 @@ namespace LLInitParam bool serializeBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t(), const BaseBlock* diff_block = NULL) const; bool inspectBlock(Parser& p, Parser::name_stack_t name_stack = Parser::name_stack_t()) const; - const BlockDescriptor& mostDerivedBlockDescriptor() const { return *mBlockDescriptor; } - BlockDescriptor& mostDerivedBlockDescriptor() { return *mBlockDescriptor; } + virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); } + virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); } // take all provided params from other and apply to self bool overwriteFrom(const BaseBlock& other) @@ -499,8 +501,6 @@ namespace LLInitParam // can be updated in getters mutable S32 mChangeVersion; - BlockDescriptor* mBlockDescriptor; // most derived block descriptor - static BlockDescriptor& selfBlockDescriptor() { static BlockDescriptor sBlockDescriptor; @@ -568,7 +568,7 @@ namespace LLInitParam mData.mValue = value; } - bool isProvided() const { return Param::getProvided(); } + bool isProvided() const { return Param::anyProvided(); } static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) { @@ -576,7 +576,7 @@ namespace LLInitParam // no further names in stack, attempt to parse value now if (name_stack.first == name_stack.second) { - if (parser.readValue<T>(typed_param.mData.mValue)) + if (parser.readValue(typed_param.mData.mValue)) { typed_param.mData.clearKey(); typed_param.setProvided(true); @@ -589,7 +589,7 @@ namespace LLInitParam { // try to parse a known named value std::string name; - if (parser.readValue<std::string>(name)) + if (parser.readValue(name)) { // try to parse a per type named value if (NAME_VALUE_LOOKUP::get(name, typed_param.mData.mValue)) @@ -624,7 +624,7 @@ namespace LLInitParam { if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->mData.getKey(), key)) { - if (!parser.writeValue<std::string>(key, name_stack)) + if (!parser.writeValue(key, name_stack)) { return; } @@ -632,7 +632,7 @@ namespace LLInitParam } // then try to serialize value directly else if (!diff_param || !ParamCompare<T>::equals(typed_param.get(), static_cast<const self_t*>(diff_param)->get())) { - if (!parser.writeValue<T>(typed_param.mData.mValue, name_stack)) + if (!parser.writeValue(typed_param.mData.mValue, name_stack)) { return; } @@ -745,7 +745,7 @@ namespace LLInitParam { // try to parse a known named value std::string name; - if (parser.readValue<std::string>(name)) + if (parser.readValue(name)) { // try to parse a per type named value if (NAME_VALUE_LOOKUP::get(name, typed_param)) @@ -772,7 +772,7 @@ namespace LLInitParam std::string key = typed_param.mData.getKey(); if (!key.empty() && typed_param.mData.mKeyVersion == typed_param.getLastChangeVersion()) { - if (!parser.writeValue<std::string>(key, name_stack)) + if (!parser.writeValue(key, name_stack)) { return; } @@ -795,13 +795,13 @@ namespace LLInitParam bool isProvided() const { // only validate block when it hasn't already passed validation and user has supplied *some* value - if (Param::getProvided() && mData.mValidatedVersion < T::getLastChangeVersion()) + if (Param::anyProvided() && mData.mValidatedVersion < T::getLastChangeVersion()) { // a sub-block is "provided" when it has been filled in enough to be valid mData.mValidated = T::validateBlock(false); mData.mValidatedVersion = T::getLastChangeVersion(); } - return Param::getProvided() && mData.mValidated; + return Param::anyProvided() && mData.mValidated; } // assign block contents to this param-that-is-a-block @@ -852,7 +852,7 @@ namespace LLInitParam { const self_t& src_typed_param = static_cast<const self_t&>(src); self_t& dst_typed_param = static_cast<self_t&>(dst); - if (dst_typed_param.T::merge(T::selfBlockDescriptor(), src_typed_param, overwrite || !dst_typed_param.isProvided())) + if (dst_typed_param.T::merge(T::selfBlockDescriptor(), src_typed_param, overwrite)) { dst_typed_param.mData.clearKey(); return true; @@ -909,7 +909,7 @@ namespace LLInitParam } } - bool isProvided() const { return Param::getProvided(); } + bool isProvided() const { return Param::anyProvided(); } static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) { @@ -919,7 +919,7 @@ namespace LLInitParam if (name_stack.first == name_stack.second) { // attempt to read value directly - if (parser.readValue<value_t>(value)) + if (parser.readValue(value)) { typed_param.mValues.push_back(value); // save an empty name/value key as a placeholder @@ -934,7 +934,7 @@ namespace LLInitParam { // try to parse a known named value std::string name; - if (parser.readValue<std::string>(name)) + if (parser.readValue(name)) { // try to parse a per type named value if (NAME_VALUE_LOOKUP::get(name, typed_param.mValues)) @@ -958,7 +958,7 @@ namespace LLInitParam const self_t& typed_param = static_cast<const self_t&>(param); if (!typed_param.isProvided() || name_stack.empty()) return; - typename container_t::const_iterator it = typed_param.mValues.begin(); + const_iterator it = typed_param.mValues.begin(); for (typename std::vector<key_cache_t>::const_iterator key_it = typed_param.mCachedKeys.begin(); it != typed_param.mValues.end(); ++key_it, ++it) @@ -968,13 +968,13 @@ namespace LLInitParam if(!key.empty()) { - if(!parser.writeValue<std::string>(key, name_stack)) + if(!parser.writeValue(key, name_stack)) { return; } } // not parse via name values, write out value directly - else if (!parser.writeValue<VALUE_TYPE>(*it, name_stack)) + else if (!parser.writeValue(*it, name_stack)) { return; } @@ -1025,8 +1025,15 @@ namespace LLInitParam // implicit conversion operator value_assignment_t() const { return self_t::get(); } - // explicit conversion - value_assignment_t operator()() const { return get(); } + + typedef typename container_t::iterator iterator; + typedef typename container_t::const_iterator const_iterator; + iterator begin() { return mValues.begin(); } + iterator end() { return mValues.end(); } + const_iterator begin() const { return mValues.begin(); } + const_iterator end() const { return mValues.end(); } + bool empty() const { return mValues.empty(); } + size_t size() const { return mValues.size(); } U32 numValidElements() const { @@ -1092,7 +1099,7 @@ namespace LLInitParam } } - bool isProvided() const { return Param::getProvided(); } + bool isProvided() const { return Param::anyProvided(); } value_ref_t operator[](S32 index) { return mValues[index]; } value_const_ref_t operator[](S32 index) const { return mValues[index]; } @@ -1100,32 +1107,41 @@ namespace LLInitParam static bool deserializeParam(Param& param, Parser& parser, const Parser::name_stack_range_t& name_stack, S32 generation) { self_t& typed_param = static_cast<self_t&>(param); + bool new_value = false; if (generation != typed_param.mLastParamGeneration || typed_param.mValues.empty()) { + new_value = true; typed_param.mValues.push_back(value_t()); typed_param.mCachedKeys.push_back(Data()); - typed_param.enclosingBlock().setLastChangedParam(param, true); - typed_param.mLastParamGeneration = generation; } - value_t& value = typed_param.mValues.back(); + value_ref_t value = typed_param.mValues.back(); // attempt to parse block... if(value.deserializeBlock(parser, name_stack)) { + if (new_value) + { // successfully parsed new value, let's keep it + typed_param.mLastParamGeneration = generation; + } + typed_param.enclosingBlock().setLastChangedParam(param, true); typed_param.setProvided(true); return true; } - - if(!NAME_VALUE_LOOKUP::empty()) + else if(!NAME_VALUE_LOOKUP::empty()) { // try to parse a known named value std::string name; - if (parser.readValue<std::string>(name)) + if (parser.readValue(name)) { // try to parse a per type named value if (NAME_VALUE_LOOKUP::get(name, value)) { + if (new_value) + { // successfully parsed new value, let's keep it + typed_param.mLastParamGeneration = generation; + } + typed_param.mCachedKeys.back().setKey(name); typed_param.mCachedKeys.back().mKeyVersion = value.getLastChangeVersion(); typed_param.enclosingBlock().setLastChangedParam(param, true); @@ -1136,6 +1152,12 @@ namespace LLInitParam } } + if (new_value) + { // failed to parse new value, pop it off + typed_param.mValues.pop_back(); + typed_param.mCachedKeys.pop_back(); + } + return false; } @@ -1144,7 +1166,7 @@ namespace LLInitParam const self_t& typed_param = static_cast<const self_t&>(param); if (!typed_param.isProvided() || name_stack.empty()) return; - typename container_t::const_iterator it = typed_param.mValues.begin(); + const_iterator it = typed_param.mValues.begin(); for (typename std::vector<Data>::const_iterator key_it = typed_param.mCachedKeys.begin(); it != typed_param.mValues.end(); ++key_it, ++it) @@ -1154,7 +1176,7 @@ namespace LLInitParam std::string key = key_it->getKey(); if (!key.empty() && key_it->mKeyVersion == it->getLastChangeVersion()) { - if(!parser.writeValue<std::string>(key, name_stack)) + if(!parser.writeValue(key, name_stack)) { return; } @@ -1208,13 +1230,20 @@ namespace LLInitParam // implicit conversion operator value_assignment_t() const { return self_t::get(); } - // explicit conversion - value_assignment_t operator()() const { return get(); } + + typedef typename container_t::iterator iterator; + typedef typename container_t::const_iterator const_iterator; + iterator begin() { return mValues.begin(); } + iterator end() { return mValues.end(); } + const_iterator begin() const { return mValues.begin(); } + const_iterator end() const { return mValues.end(); } + bool empty() const { return mValues.empty(); } + size_t size() const { return mValues.size(); } U32 numValidElements() const { U32 count = 0; - for (typename container_t::const_iterator it = mValues.begin(); + for (const_iterator it = mValues.begin(); it != mValues.end(); ++it) { @@ -1306,6 +1335,9 @@ namespace LLInitParam BaseBlock::setLastChangedParam(last_param, user_provided); } + virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); } + virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); } + protected: Choice() : mCurChoice(0) @@ -1415,6 +1447,10 @@ namespace LLInitParam { return BaseBlock::merge(selfBlockDescriptor(), other, false); } + + virtual const BlockDescriptor& mostDerivedBlockDescriptor() const { return selfBlockDescriptor(); } + virtual BlockDescriptor& mostDerivedBlockDescriptor() { return selfBlockDescriptor(); } + protected: Block() { @@ -1494,15 +1530,13 @@ namespace LLInitParam typedef Multiple<T, RANGE, NAME_VALUE_LOOKUP> self_t; typedef typename super_t::container_t container_t; typedef typename super_t::value_assignment_t value_assignment_t; - typedef typename container_t::iterator iterator; - typedef typename container_t::const_iterator const_iterator; + typedef typename super_t::iterator iterator; + typedef typename super_t::const_iterator const_iterator; explicit Multiple(const char* name = "", value_assignment_t val = DefaultInitializer<container_t>::get()) : super_t(DERIVED_BLOCK::selfBlockDescriptor(), name, val, &validate, RANGE::minCount(), RANGE::maxCount()) {} - using super_t::operator(); - Multiple& operator=(value_assignment_t val) { set(val); @@ -1612,7 +1646,7 @@ namespace LLInitParam // type to apply parse direct value T if (name_stack.first == name_stack.second) { - if(parser.readValue<T>(typed_param.mData.mValue)) + if(parser.readValue(typed_param.mData.mValue)) { typed_param.enclosingBlock().setLastChangedParam(param, true); typed_param.setProvided(true); @@ -1627,7 +1661,7 @@ namespace LLInitParam { // try to parse a known named value std::string name; - if (parser.readValue<std::string>(name)) + if (parser.readValue(name)) { // try to parse a per type named value if (TypeValues<T>::get(name, typed_param.mData.mValue)) @@ -1669,7 +1703,7 @@ namespace LLInitParam { if (!diff_param || !ParamCompare<std::string>::equals(static_cast<const self_t*>(diff_param)->mData.getKey(), key)) { - if (!parser.writeValue<std::string>(key, name_stack)) + if (!parser.writeValue(key, name_stack)) { return; } @@ -1679,7 +1713,7 @@ namespace LLInitParam else if (!diff_param || !ParamCompare<T>::equals(typed_param.get(), (static_cast<const self_t*>(diff_param))->get())) { - if (parser.writeValue<T>(typed_param.mData.mValue, name_stack)) + if (parser.writeValue(typed_param.mData.mValue, name_stack)) { return; } @@ -1712,7 +1746,7 @@ namespace LLInitParam bool isProvided() const { - if (!Param::getProvided()) return false; + if (!Param::anyProvided()) return false; // block has an updated parameter // if cached value is stale, regenerate from params @@ -1779,7 +1813,7 @@ namespace LLInitParam value_assignment_t get() const { // if some parameters were provided, issue warnings on invalid blocks - if (Param::getProvided() && (mData.mValueAge == OLDER_THAN_BLOCK)) + if (Param::anyProvided() && (mData.mValueAge == OLDER_THAN_BLOCK)) { // go ahead and issue warnings at this point if any param is invalid if(block_t::validateBlock(true)) diff --git a/indra/llxuixml/llregistry.h b/indra/llxuixml/llregistry.h index ee119b9ebcbd4759917a610943706b2fe5873a04..eee9933739ac20d6131ddcfd0881fcc0779425fc 100644 --- a/indra/llxuixml/llregistry.h +++ b/indra/llxuixml/llregistry.h @@ -70,6 +70,11 @@ class LLRegistry mMap.erase(key); } + void replace(ref_const_key_t key, ref_const_value_t value) + { + mMap[key] = value; + } + typename registry_map_t::const_iterator beginItems() const { return mMap.begin(); diff --git a/indra/llxuixml/lltrans.cpp b/indra/llxuixml/lltrans.cpp index 01e13864b6a0ad7505b55504cde1d3b9adcbfc76..11127a53f52d2ca4e0fa25e52a807fb73223a1e3 100644 --- a/indra/llxuixml/lltrans.cpp +++ b/indra/llxuixml/lltrans.cpp @@ -66,7 +66,8 @@ bool LLTrans::parseStrings(LLXMLNodePtr &root, const std::set<std::string>& defa } StringTable string_table; - LLXUIParser::instance().readXUI(root, string_table, xml_filename); + LLXUIParser parser; + parser.readXUI(root, string_table, xml_filename); if (!string_table.validateBlock()) { @@ -77,8 +78,8 @@ bool LLTrans::parseStrings(LLXMLNodePtr &root, const std::set<std::string>& defa sStringTemplates.clear(); sDefaultArgs.clear(); - for(LLInitParam::ParamIterator<StringDef>::const_iterator it = string_table.strings().begin(); - it != string_table.strings().end(); + for(LLInitParam::ParamIterator<StringDef>::const_iterator it = string_table.strings.begin(); + it != string_table.strings.end(); ++it) { LLTransTemplate xml_template(it->name, it->value); @@ -109,7 +110,8 @@ bool LLTrans::parseLanguageStrings(LLXMLNodePtr &root) } StringTable string_table; - LLXUIParser::instance().readXUI(root, string_table, xml_filename); + LLXUIParser parser; + parser.readXUI(root, string_table, xml_filename); if (!string_table.validateBlock()) { @@ -117,8 +119,8 @@ bool LLTrans::parseLanguageStrings(LLXMLNodePtr &root) return false; } - for(LLInitParam::ParamIterator<StringDef>::const_iterator it = string_table.strings().begin(); - it != string_table.strings().end(); + for(LLInitParam::ParamIterator<StringDef>::const_iterator it = string_table.strings.begin(); + it != string_table.strings.end(); ++it) { // share the same map with parseStrings() so we can search the strings using the same getString() function.- angela diff --git a/indra/llxuixml/llxuiparser.cpp b/indra/llxuixml/llxuiparser.cpp index 8469debd3ec62b73e12c6c01a2d559cf8ba094c9..e1ad9a5c7143b931625d813cd1322718cf0faee9 100644 --- a/indra/llxuixml/llxuiparser.cpp +++ b/indra/llxuixml/llxuiparser.cpp @@ -29,17 +29,28 @@ #include "llxuiparser.h" #include "llxmlnode.h" +#include "expat/expat.h" #include <fstream> #include <boost/tokenizer.hpp> +//#include <boost/spirit/include/qi.hpp> +#include <boost/spirit/include/classic_core.hpp> #include "lluicolor.h" +using namespace BOOST_SPIRIT_CLASSIC_NS; + const S32 MAX_STRING_ATTRIBUTE_SIZE = 40; +static LLInitParam::Parser::parser_read_func_map_t sXSDReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sXSDWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sXSDInspectFuncs; + + // // LLXSDWriter // LLXSDWriter::LLXSDWriter() +: Parser(sXSDReadFuncs, sXSDWriteFuncs, sXSDInspectFuncs) { registerInspectFunc<bool>(boost::bind(&LLXSDWriter::writeAttribute, this, "xs:boolean", _1, _2, _3, _4)); registerInspectFunc<std::string>(boost::bind(&LLXSDWriter::writeAttribute, this, "xs:string", _1, _2, _3, _4)); @@ -357,41 +368,35 @@ void LLXUIXSDWriter::writeXSD(const std::string& type_name, const std::string& p fclose(xsd_file); } +static LLInitParam::Parser::parser_read_func_map_t sXUIReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sXUIWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sXUIInspectFuncs; + // // LLXUIParser // LLXUIParser::LLXUIParser() -: mLastWriteGeneration(-1), +: Parser(sXUIReadFuncs, sXUIWriteFuncs, sXUIInspectFuncs), + mLastWriteGeneration(-1), mCurReadDepth(0) { - registerParserFuncs<bool>(boost::bind(&LLXUIParser::readBoolValue, this, _1), - boost::bind(&LLXUIParser::writeBoolValue, this, _1, _2)); - registerParserFuncs<std::string>(boost::bind(&LLXUIParser::readStringValue, this, _1), - boost::bind(&LLXUIParser::writeStringValue, this, _1, _2)); - registerParserFuncs<U8>(boost::bind(&LLXUIParser::readU8Value, this, _1), - boost::bind(&LLXUIParser::writeU8Value, this, _1, _2)); - registerParserFuncs<S8>(boost::bind(&LLXUIParser::readS8Value, this, _1), - boost::bind(&LLXUIParser::writeS8Value, this, _1, _2)); - registerParserFuncs<U16>(boost::bind(&LLXUIParser::readU16Value, this, _1), - boost::bind(&LLXUIParser::writeU16Value, this, _1, _2)); - registerParserFuncs<S16>(boost::bind(&LLXUIParser::readS16Value, this, _1), - boost::bind(&LLXUIParser::writeS16Value, this, _1, _2)); - registerParserFuncs<U32>(boost::bind(&LLXUIParser::readU32Value, this, _1), - boost::bind(&LLXUIParser::writeU32Value, this, _1, _2)); - registerParserFuncs<S32>(boost::bind(&LLXUIParser::readS32Value, this, _1), - boost::bind(&LLXUIParser::writeS32Value, this, _1, _2)); - registerParserFuncs<F32>(boost::bind(&LLXUIParser::readF32Value, this, _1), - boost::bind(&LLXUIParser::writeF32Value, this, _1, _2)); - registerParserFuncs<F64>(boost::bind(&LLXUIParser::readF64Value, this, _1), - boost::bind(&LLXUIParser::writeF64Value, this, _1, _2)); - registerParserFuncs<LLColor4>(boost::bind(&LLXUIParser::readColor4Value, this, _1), - boost::bind(&LLXUIParser::writeColor4Value, this, _1, _2)); - registerParserFuncs<LLUIColor>(boost::bind(&LLXUIParser::readUIColorValue, this, _1), - boost::bind(&LLXUIParser::writeUIColorValue, this, _1, _2)); - registerParserFuncs<LLUUID>(boost::bind(&LLXUIParser::readUUIDValue, this, _1), - boost::bind(&LLXUIParser::writeUUIDValue, this, _1, _2)); - registerParserFuncs<LLSD>(boost::bind(&LLXUIParser::readSDValue, this, _1), - boost::bind(&LLXUIParser::writeSDValue, this, _1, _2)); + if (sXUIReadFuncs.empty()) + { + registerParserFuncs<bool>(readBoolValue, writeBoolValue); + registerParserFuncs<std::string>(readStringValue, writeStringValue); + registerParserFuncs<U8>(readU8Value, writeU8Value); + registerParserFuncs<S8>(readS8Value, writeS8Value); + registerParserFuncs<U16>(readU16Value, writeU16Value); + registerParserFuncs<S16>(readS16Value, writeS16Value); + registerParserFuncs<U32>(readU32Value, writeU32Value); + registerParserFuncs<S32>(readS32Value, writeS32Value); + registerParserFuncs<F32>(readF32Value, writeF32Value); + registerParserFuncs<F64>(readF64Value, writeF64Value); + registerParserFuncs<LLColor4>(readColor4Value, writeColor4Value); + registerParserFuncs<LLUIColor>(readUIColorValue, writeUIColorValue); + registerParserFuncs<LLUUID>(readUUIDValue, writeUUIDValue); + registerParserFuncs<LLSD>(readSDValue, writeSDValue); + } } static LLFastTimer::DeclareTimer FTM_PARSE_XUI("XUI Parsing"); @@ -400,6 +405,7 @@ void LLXUIParser::readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, cons { LLFastTimer timer(FTM_PARSE_XUI); mNameStack.clear(); + mRootNodeName = node->getName()->mString; mCurFileName = filename; mCurReadDepth = 0; setParseSilently(silent); @@ -410,11 +416,11 @@ void LLXUIParser::readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, cons } else { - readXUIImpl(node, std::string(node->getName()->mString), block); + readXUIImpl(node, block); } } -bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLInitParam::BaseBlock& block) +bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block) { typedef boost::tokenizer<boost::char_separator<char> > tokenizer; boost::char_separator<char> sep("."); @@ -481,7 +487,15 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn } // check for proper nesting - if(!scope.empty() && *name_token_it != scope) + if (mNameStack.empty()) + { + if (*name_token_it != mRootNodeName) + { + childp = childp->getNextSibling(); + continue; + } + } + else if(mNameStack.back().first != *name_token_it) { childp = childp->getNextSibling(); continue; @@ -499,7 +513,7 @@ bool LLXUIParser::readXUIImpl(LLXMLNodePtr nodep, const std::string& scope, LLIn } // recurse and visit children XML nodes - if(readXUIImpl(childp, mNameStack.empty() ? scope : mNameStack.back().first, block)) + if(readXUIImpl(childp, block)) { // child node successfully parsed, remove from DOM @@ -615,17 +629,19 @@ LLXMLNodePtr LLXUIParser::getNode(const name_stack_t& stack) } -bool LLXUIParser::readBoolValue(void* val_ptr) +bool LLXUIParser::readBoolValue(Parser& parser, void* val_ptr) { S32 value; - bool success = mCurReadNode->getBoolValue(1, &value); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + bool success = self.mCurReadNode->getBoolValue(1, &value); *((bool*)val_ptr) = (value != FALSE); return success; } -bool LLXUIParser::writeBoolValue(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setBoolValue(*((bool*)val_ptr)); @@ -634,15 +650,17 @@ bool LLXUIParser::writeBoolValue(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readStringValue(void* val_ptr) +bool LLXUIParser::readStringValue(Parser& parser, void* val_ptr) { - *((std::string*)val_ptr) = mCurReadNode->getSanitizedValue(); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + *((std::string*)val_ptr) = self.mCurReadNode->getSanitizedValue(); return true; } -bool LLXUIParser::writeStringValue(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { const std::string* string_val = reinterpret_cast<const std::string*>(val_ptr); @@ -671,14 +689,16 @@ bool LLXUIParser::writeStringValue(const void* val_ptr, const name_stack_t& stac return false; } -bool LLXUIParser::readU8Value(void* val_ptr) +bool LLXUIParser::readU8Value(Parser& parser, void* val_ptr) { - return mCurReadNode->getByteValue(1, (U8*)val_ptr); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + return self.mCurReadNode->getByteValue(1, (U8*)val_ptr); } -bool LLXUIParser::writeU8Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setUnsignedValue(*((U8*)val_ptr)); @@ -687,10 +707,11 @@ bool LLXUIParser::writeU8Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readS8Value(void* val_ptr) +bool LLXUIParser::readS8Value(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); S32 value; - if(mCurReadNode->getIntValue(1, &value)) + if(self.mCurReadNode->getIntValue(1, &value)) { *((S8*)val_ptr) = value; return true; @@ -698,9 +719,10 @@ bool LLXUIParser::readS8Value(void* val_ptr) return false; } -bool LLXUIParser::writeS8Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setIntValue(*((S8*)val_ptr)); @@ -709,10 +731,11 @@ bool LLXUIParser::writeS8Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readU16Value(void* val_ptr) +bool LLXUIParser::readU16Value(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); U32 value; - if(mCurReadNode->getUnsignedValue(1, &value)) + if(self.mCurReadNode->getUnsignedValue(1, &value)) { *((U16*)val_ptr) = value; return true; @@ -720,9 +743,10 @@ bool LLXUIParser::readU16Value(void* val_ptr) return false; } -bool LLXUIParser::writeU16Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setUnsignedValue(*((U16*)val_ptr)); @@ -731,10 +755,11 @@ bool LLXUIParser::writeU16Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readS16Value(void* val_ptr) +bool LLXUIParser::readS16Value(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); S32 value; - if(mCurReadNode->getIntValue(1, &value)) + if(self.mCurReadNode->getIntValue(1, &value)) { *((S16*)val_ptr) = value; return true; @@ -742,9 +767,10 @@ bool LLXUIParser::readS16Value(void* val_ptr) return false; } -bool LLXUIParser::writeS16Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setIntValue(*((S16*)val_ptr)); @@ -753,14 +779,16 @@ bool LLXUIParser::writeS16Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readU32Value(void* val_ptr) +bool LLXUIParser::readU32Value(Parser& parser, void* val_ptr) { - return mCurReadNode->getUnsignedValue(1, (U32*)val_ptr); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + return self.mCurReadNode->getUnsignedValue(1, (U32*)val_ptr); } -bool LLXUIParser::writeU32Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setUnsignedValue(*((U32*)val_ptr)); @@ -769,14 +797,16 @@ bool LLXUIParser::writeU32Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readS32Value(void* val_ptr) +bool LLXUIParser::readS32Value(Parser& parser, void* val_ptr) { - return mCurReadNode->getIntValue(1, (S32*)val_ptr); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + return self.mCurReadNode->getIntValue(1, (S32*)val_ptr); } -bool LLXUIParser::writeS32Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setIntValue(*((S32*)val_ptr)); @@ -785,14 +815,16 @@ bool LLXUIParser::writeS32Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readF32Value(void* val_ptr) +bool LLXUIParser::readF32Value(Parser& parser, void* val_ptr) { - return mCurReadNode->getFloatValue(1, (F32*)val_ptr); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + return self.mCurReadNode->getFloatValue(1, (F32*)val_ptr); } -bool LLXUIParser::writeF32Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setFloatValue(*((F32*)val_ptr)); @@ -801,14 +833,16 @@ bool LLXUIParser::writeF32Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readF64Value(void* val_ptr) +bool LLXUIParser::readF64Value(Parser& parser, void* val_ptr) { - return mCurReadNode->getDoubleValue(1, (F64*)val_ptr); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + return self.mCurReadNode->getDoubleValue(1, (F64*)val_ptr); } -bool LLXUIParser::writeF64Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setDoubleValue(*((F64*)val_ptr)); @@ -817,10 +851,11 @@ bool LLXUIParser::writeF64Value(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readColor4Value(void* val_ptr) +bool LLXUIParser::readColor4Value(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); LLColor4* colorp = (LLColor4*)val_ptr; - if(mCurReadNode->getFloatValue(4, colorp->mV) >= 3) + if(self.mCurReadNode->getFloatValue(4, colorp->mV) >= 3) { return true; } @@ -828,9 +863,10 @@ bool LLXUIParser::readColor4Value(void* val_ptr) return false; } -bool LLXUIParser::writeColor4Value(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { LLColor4 color = *((LLColor4*)val_ptr); @@ -840,11 +876,12 @@ bool LLXUIParser::writeColor4Value(const void* val_ptr, const name_stack_t& stac return false; } -bool LLXUIParser::readUIColorValue(void* val_ptr) +bool LLXUIParser::readUIColorValue(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); LLUIColor* param = (LLUIColor*)val_ptr; LLColor4 color; - bool success = mCurReadNode->getFloatValue(4, color.mV) >= 3; + bool success = self.mCurReadNode->getFloatValue(4, color.mV) >= 3; if (success) { param->set(color); @@ -853,9 +890,10 @@ bool LLXUIParser::readUIColorValue(void* val_ptr) return false; } -bool LLXUIParser::writeUIColorValue(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { LLUIColor color = *((LLUIColor*)val_ptr); @@ -868,11 +906,12 @@ bool LLXUIParser::writeUIColorValue(const void* val_ptr, const name_stack_t& sta return false; } -bool LLXUIParser::readUUIDValue(void* val_ptr) +bool LLXUIParser::readUUIDValue(Parser& parser, void* val_ptr) { + LLXUIParser& self = static_cast<LLXUIParser&>(parser); LLUUID temp_id; // LLUUID::set is destructive, so use temporary value - if (temp_id.set(mCurReadNode->getSanitizedValue())) + if (temp_id.set(self.mCurReadNode->getSanitizedValue())) { *(LLUUID*)(val_ptr) = temp_id; return true; @@ -880,9 +919,10 @@ bool LLXUIParser::readUUIDValue(void* val_ptr) return false; } -bool LLXUIParser::writeUUIDValue(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { node->setStringValue(((LLUUID*)val_ptr)->asString()); @@ -891,15 +931,18 @@ bool LLXUIParser::writeUUIDValue(const void* val_ptr, const name_stack_t& stack) return false; } -bool LLXUIParser::readSDValue(void* val_ptr) +bool LLXUIParser::readSDValue(Parser& parser, void* val_ptr) { - *((LLSD*)val_ptr) = LLSD(mCurReadNode->getSanitizedValue()); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + *((LLSD*)val_ptr) = LLSD(self.mCurReadNode->getSanitizedValue()); return true; } -bool LLXUIParser::writeSDValue(const void* val_ptr, const name_stack_t& stack) +bool LLXUIParser::writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t& stack) { - LLXMLNodePtr node = getNode(stack); + LLXUIParser& self = static_cast<LLXUIParser&>(parser); + + LLXMLNodePtr node = self.getNode(stack); if (node.notNull()) { std::string string_val = ((LLSD*)val_ptr)->asString(); @@ -962,3 +1005,438 @@ void LLXUIParser::parserError(const std::string& message) Parser::parserError(message); #endif } + + +// +// LLSimpleXUIParser +// + +struct ScopedFile +{ + ScopedFile( const std::string& filename, const char* accessmode ) + { + mFile = LLFile::fopen(filename, accessmode); + } + + ~ScopedFile() + { + fclose(mFile); + mFile = NULL; + } + + S32 getRemainingBytes() + { + if (!isOpen()) return 0; + + S32 cur_pos = ftell(mFile); + fseek(mFile, 0L, SEEK_END); + S32 file_size = ftell(mFile); + fseek(mFile, cur_pos, SEEK_SET); + return file_size - cur_pos; + } + + bool isOpen() { return mFile != NULL; } + + LLFILE* mFile; +}; +static LLInitParam::Parser::parser_read_func_map_t sSimpleXUIReadFuncs; +static LLInitParam::Parser::parser_write_func_map_t sSimpleXUIWriteFuncs; +static LLInitParam::Parser::parser_inspect_func_map_t sSimpleXUIInspectFuncs; + +LLSimpleXUIParser::LLSimpleXUIParser(LLSimpleXUIParser::element_start_callback_t element_cb) +: Parser(sSimpleXUIReadFuncs, sSimpleXUIWriteFuncs, sSimpleXUIInspectFuncs), + mLastWriteGeneration(-1), + mCurReadDepth(0), + mElementCB(element_cb) +{ + if (sSimpleXUIReadFuncs.empty()) + { + registerParserFuncs<bool>(readBoolValue); + registerParserFuncs<std::string>(readStringValue); + registerParserFuncs<U8>(readU8Value); + registerParserFuncs<S8>(readS8Value); + registerParserFuncs<U16>(readU16Value); + registerParserFuncs<S16>(readS16Value); + registerParserFuncs<U32>(readU32Value); + registerParserFuncs<S32>(readS32Value); + registerParserFuncs<F32>(readF32Value); + registerParserFuncs<F64>(readF64Value); + registerParserFuncs<LLColor4>(readColor4Value); + registerParserFuncs<LLUIColor>(readUIColorValue); + registerParserFuncs<LLUUID>(readUUIDValue); + registerParserFuncs<LLSD>(readSDValue); + } +} + +LLSimpleXUIParser::~LLSimpleXUIParser() +{ +} + + +bool LLSimpleXUIParser::readXUI(const std::string& filename, LLInitParam::BaseBlock& block, bool silent) +{ + LLFastTimer timer(FTM_PARSE_XUI); + + mParser = XML_ParserCreate(NULL); + XML_SetUserData(mParser, this); + XML_SetElementHandler( mParser, startElementHandler, endElementHandler); + XML_SetCharacterDataHandler( mParser, characterDataHandler); + + mOutputStack.push_back(std::make_pair(&block, 0)); + mNameStack.clear(); + mCurFileName = filename; + mCurReadDepth = 0; + setParseSilently(silent); + + ScopedFile file(filename, "rb"); + if( !file.isOpen() ) + { + LL_WARNS("ReadXUI") << "Unable to open file " << filename << LL_ENDL; + return false; + } + + S32 bytes_read = 0; + + S32 buffer_size = file.getRemainingBytes(); + void* buffer = XML_GetBuffer(mParser, buffer_size); + if( !buffer ) + { + LL_WARNS("ReadXUI") << "Unable to allocate XML buffer while reading file " << filename << LL_ENDL; + XML_ParserFree( mParser ); + return false; + } + + bytes_read = (S32)fread(buffer, 1, buffer_size, file.mFile); + if( bytes_read <= 0 ) + { + LL_WARNS("ReadXUI") << "Error while reading file " << filename << LL_ENDL; + XML_ParserFree( mParser ); + return false; + } + + if( !XML_ParseBuffer(mParser, bytes_read, TRUE ) ) + { + LL_WARNS("ReadXUI") << "Error while parsing file " << filename << LL_ENDL; + XML_ParserFree( mParser ); + return false; + } + + XML_ParserFree( mParser ); + return true; +} + +void LLSimpleXUIParser::startElementHandler(void *userData, const char *name, const char **atts) +{ + LLSimpleXUIParser* self = reinterpret_cast<LLSimpleXUIParser*>(userData); + self->startElement(name, atts); +} + +void LLSimpleXUIParser::endElementHandler(void *userData, const char *name) +{ + LLSimpleXUIParser* self = reinterpret_cast<LLSimpleXUIParser*>(userData); + self->endElement(name); +} + +void LLSimpleXUIParser::characterDataHandler(void *userData, const char *s, int len) +{ + LLSimpleXUIParser* self = reinterpret_cast<LLSimpleXUIParser*>(userData); + self->characterData(s, len); +} + +void LLSimpleXUIParser::startElement(const char *name, const char **atts) +{ + processText(); + + typedef boost::tokenizer<boost::char_separator<char> > tokenizer; + boost::char_separator<char> sep("."); + + if (mElementCB) + { + LLInitParam::BaseBlock* blockp = mElementCB(*this, name); + if (blockp) + { + mOutputStack.push_back(std::make_pair(blockp, 0)); + } + } + + mOutputStack.back().second++; + S32 num_tokens_pushed = 0; + std::string child_name(name); + + if (mOutputStack.back().second == 1) + { // root node for this block + mScope.push_back(child_name); + } + else + { // compound attribute + if (child_name.find(".") == std::string::npos) + { + mNameStack.push_back(std::make_pair(child_name, newParseGeneration())); + num_tokens_pushed++; + mScope.push_back(child_name); + } + else + { + // parse out "dotted" name into individual tokens + tokenizer name_tokens(child_name, sep); + + tokenizer::iterator name_token_it = name_tokens.begin(); + if(name_token_it == name_tokens.end()) + { + return; + } + + // check for proper nesting + if(!mScope.empty() && *name_token_it != mScope.back()) + { + return; + } + + // now ignore first token + ++name_token_it; + + // copy remaining tokens on to our running token list + for(tokenizer::iterator token_to_push = name_token_it; token_to_push != name_tokens.end(); ++token_to_push) + { + mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration())); + num_tokens_pushed++; + } + mScope.push_back(mNameStack.back().first); + } + } + + mTokenSizeStack.push_back(num_tokens_pushed); + readAttributes(atts); +} + +bool LLSimpleXUIParser::readAttributes(const char **atts) +{ + typedef boost::tokenizer<boost::char_separator<char> > tokenizer; + boost::char_separator<char> sep("."); + + bool any_parsed = false; + for(S32 i = 0; atts[i] && atts[i+1]; i += 2 ) + { + std::string attribute_name(atts[i]); + mCurAttributeValueBegin = atts[i+1]; + + S32 num_tokens_pushed = 0; + tokenizer name_tokens(attribute_name, sep); + // copy remaining tokens on to our running token list + for(tokenizer::iterator token_to_push = name_tokens.begin(); token_to_push != name_tokens.end(); ++token_to_push) + { + mNameStack.push_back(std::make_pair(*token_to_push, newParseGeneration())); + num_tokens_pushed++; + } + + // child nodes are not necessarily valid attributes, so don't complain once we've recursed + any_parsed |= mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently); + + while(num_tokens_pushed-- > 0) + { + mNameStack.pop_back(); + } + } + return any_parsed; +} + +void LLSimpleXUIParser::processText() +{ + if (!mTextContents.empty()) + { + LLStringUtil::trim(mTextContents); + if (!mTextContents.empty()) + { + mNameStack.push_back(std::make_pair(std::string("value"), newParseGeneration())); + mCurAttributeValueBegin = mTextContents.c_str(); + mOutputStack.back().first->submitValue(mNameStack, *this, mParseSilently); + mNameStack.pop_back(); + } + mTextContents.clear(); + } +} + +void LLSimpleXUIParser::endElement(const char *name) +{ + processText(); + + if (--mOutputStack.back().second == 0) + { + if (mOutputStack.empty()) + { + LL_ERRS("ReadXUI") << "Parameter block output stack popped while empty." << LL_ENDL; + } + mOutputStack.pop_back(); + } + + S32 num_tokens_to_pop = mTokenSizeStack.back(); + mTokenSizeStack.pop_back(); + while(num_tokens_to_pop-- > 0) + { + mNameStack.pop_back(); + } + mScope.pop_back(); +} + +void LLSimpleXUIParser::characterData(const char *s, int len) +{ + mTextContents += std::string(s, len); +} + + +/*virtual*/ std::string LLSimpleXUIParser::getCurrentElementName() +{ + std::string full_name; + for (name_stack_t::iterator it = mNameStack.begin(); + it != mNameStack.end(); + ++it) + { + full_name += it->first + "."; // build up dotted names: "button.param.nestedparam." + } + + return full_name; +} + +const S32 LINE_NUMBER_HERE = 0; + +void LLSimpleXUIParser::parserWarning(const std::string& message) +{ +#ifdef LL_WINDOWS + // use Visual Studo friendly formatting of output message for easy access to originating xml + llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str()).c_str()); + utf16str += '\n'; + OutputDebugString(utf16str.c_str()); +#else + Parser::parserWarning(message); +#endif +} + +void LLSimpleXUIParser::parserError(const std::string& message) +{ +#ifdef LL_WINDOWS + llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str()).c_str()); + utf16str += '\n'; + OutputDebugString(utf16str.c_str()); +#else + Parser::parserError(message); +#endif +} + +bool LLSimpleXUIParser::readBoolValue(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + if (!strcmp(self.mCurAttributeValueBegin, "true")) + { + *((bool*)val_ptr) = true; + return true; + } + else if (!strcmp(self.mCurAttributeValueBegin, "false")) + { + *((bool*)val_ptr) = false; + return true; + } + + return false; +} + +bool LLSimpleXUIParser::readStringValue(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + *((std::string*)val_ptr) = self.mCurAttributeValueBegin; + return true; +} + +bool LLSimpleXUIParser::readU8Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, uint_p[assign_a(*(U8*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readS8Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, int_p[assign_a(*(S8*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readU16Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, uint_p[assign_a(*(U16*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readS16Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, int_p[assign_a(*(S16*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readU32Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, uint_p[assign_a(*(U32*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readS32Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, int_p[assign_a(*(S32*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readF32Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, real_p[assign_a(*(F32*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readF64Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + return parse(self.mCurAttributeValueBegin, real_p[assign_a(*(F64*)val_ptr)]).full; +} + +bool LLSimpleXUIParser::readColor4Value(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + LLColor4 value; + + if (parse(self.mCurAttributeValueBegin, real_p[assign_a(value.mV[0])] >> real_p[assign_a(value.mV[1])] >> real_p[assign_a(value.mV[2])] >> real_p[assign_a(value.mV[3])], space_p).full) + { + *(LLColor4*)(val_ptr) = value; + return true; + } + return false; +} + +bool LLSimpleXUIParser::readUIColorValue(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + LLColor4 value; + LLUIColor* colorp = (LLUIColor*)val_ptr; + + if (parse(self.mCurAttributeValueBegin, real_p[assign_a(value.mV[0])] >> real_p[assign_a(value.mV[1])] >> real_p[assign_a(value.mV[2])] >> real_p[assign_a(value.mV[3])], space_p).full) + { + colorp->set(value); + return true; + } + return false; +} + +bool LLSimpleXUIParser::readUUIDValue(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + LLUUID temp_id; + // LLUUID::set is destructive, so use temporary value + if (temp_id.set(std::string(self.mCurAttributeValueBegin))) + { + *(LLUUID*)(val_ptr) = temp_id; + return true; + } + return false; +} + +bool LLSimpleXUIParser::readSDValue(Parser& parser, void* val_ptr) +{ + LLSimpleXUIParser& self = static_cast<LLSimpleXUIParser&>(parser); + *((LLSD*)val_ptr) = LLSD(self.mCurAttributeValueBegin); + return true; +} diff --git a/indra/llxuixml/llxuiparser.h b/indra/llxuixml/llxuiparser.h index 30b7e8c356948cc59c54176103a44a812b7df47d..5c613b0c6998ed1d5a518d4f61eff284dc32d459 100644 --- a/indra/llxuixml/llxuiparser.h +++ b/indra/llxuixml/llxuiparser.h @@ -96,14 +96,12 @@ class LLXUIXSDWriter : public LLXSDWriter -class LLXUIParser : public LLInitParam::Parser, public LLSingleton<LLXUIParser> +class LLXUIParser : public LLInitParam::Parser { LOG_CLASS(LLXUIParser); -protected: - LLXUIParser(); - friend class LLSingleton<LLXUIParser>; public: + LLXUIParser(); typedef LLInitParam::Parser::name_stack_t name_stack_t; /*virtual*/ std::string getCurrentElementName(); @@ -114,42 +112,40 @@ LOG_CLASS(LLXUIParser); void writeXUI(LLXMLNodePtr node, const LLInitParam::BaseBlock& block, const LLInitParam::BaseBlock* diff_block = NULL); private: - typedef std::list<std::pair<std::string, bool> > token_list_t; - - bool readXUIImpl(LLXMLNodePtr node, const std::string& scope, LLInitParam::BaseBlock& block); + bool readXUIImpl(LLXMLNodePtr node, LLInitParam::BaseBlock& block); bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block); //reader helper functions - bool readBoolValue(void* val_ptr); - bool readStringValue(void* val_ptr); - bool readU8Value(void* val_ptr); - bool readS8Value(void* val_ptr); - bool readU16Value(void* val_ptr); - bool readS16Value(void* val_ptr); - bool readU32Value(void* val_ptr); - bool readS32Value(void* val_ptr); - bool readF32Value(void* val_ptr); - bool readF64Value(void* val_ptr); - bool readColor4Value(void* val_ptr); - bool readUIColorValue(void* val_ptr); - bool readUUIDValue(void* val_ptr); - bool readSDValue(void* val_ptr); + static bool readBoolValue(Parser& parser, void* val_ptr); + static bool readStringValue(Parser& parser, void* val_ptr); + static bool readU8Value(Parser& parser, void* val_ptr); + static bool readS8Value(Parser& parser, void* val_ptr); + static bool readU16Value(Parser& parser, void* val_ptr); + static bool readS16Value(Parser& parser, void* val_ptr); + static bool readU32Value(Parser& parser, void* val_ptr); + static bool readS32Value(Parser& parser, void* val_ptr); + static bool readF32Value(Parser& parser, void* val_ptr); + static bool readF64Value(Parser& parser, void* val_ptr); + static bool readColor4Value(Parser& parser, void* val_ptr); + static bool readUIColorValue(Parser& parser, void* val_ptr); + static bool readUUIDValue(Parser& parser, void* val_ptr); + static bool readSDValue(Parser& parser, void* val_ptr); //writer helper functions - bool writeBoolValue(const void* val_ptr, const name_stack_t&); - bool writeStringValue(const void* val_ptr, const name_stack_t&); - bool writeU8Value(const void* val_ptr, const name_stack_t&); - bool writeS8Value(const void* val_ptr, const name_stack_t&); - bool writeU16Value(const void* val_ptr, const name_stack_t&); - bool writeS16Value(const void* val_ptr, const name_stack_t&); - bool writeU32Value(const void* val_ptr, const name_stack_t&); - bool writeS32Value(const void* val_ptr, const name_stack_t&); - bool writeF32Value(const void* val_ptr, const name_stack_t&); - bool writeF64Value(const void* val_ptr, const name_stack_t&); - bool writeColor4Value(const void* val_ptr, const name_stack_t&); - bool writeUIColorValue(const void* val_ptr, const name_stack_t&); - bool writeUUIDValue(const void* val_ptr, const name_stack_t&); - bool writeSDValue(const void* val_ptr, const name_stack_t&); + static bool writeBoolValue(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeStringValue(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeU8Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeS8Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeU16Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeS16Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeU32Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeS32Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeF32Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeF64Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeColor4Value(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeUIColorValue(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeUUIDValue(Parser& parser, const void* val_ptr, const name_stack_t&); + static bool writeSDValue(Parser& parser, const void* val_ptr, const name_stack_t&); LLXMLNodePtr getNode(const name_stack_t& stack); @@ -165,6 +161,78 @@ LOG_CLASS(LLXUIParser); LLXMLNodePtr mLastWrittenChild; S32 mCurReadDepth; std::string mCurFileName; + std::string mRootNodeName; +}; + +// LLSimpleXUIParser is a streamlined SAX-based XUI parser that does not support localization +// or parsing of a tree of independent param blocks, such as child widgets. +// Use this for reading non-localized files that only need a single param block as a result. +// +// NOTE: In order to support nested block parsing, we need callbacks for start element that +// push new blocks contexts on the mScope stack. +// NOTE: To support localization without building a DOM, we need to enforce consistent +// ordering of child elements from base file to localized diff file. Then we can use a pair +// of coroutines to perform matching of xml nodes during parsing. Not sure if the overhead +// of coroutines would offset the gain from SAX parsing + +class LLSimpleXUIParser : public LLInitParam::Parser +{ +LOG_CLASS(LLSimpleXUIParser); +public: + typedef LLInitParam::Parser::name_stack_t name_stack_t; + typedef LLInitParam::BaseBlock* (*element_start_callback_t)(LLSimpleXUIParser&, const char* block_name); + + LLSimpleXUIParser(element_start_callback_t element_cb = NULL); + virtual ~LLSimpleXUIParser(); + + /*virtual*/ std::string getCurrentElementName(); + /*virtual*/ void parserWarning(const std::string& message); + /*virtual*/ void parserError(const std::string& message); + + bool readXUI(const std::string& filename, LLInitParam::BaseBlock& block, bool silent=false); + + +private: + //reader helper functions + static bool readBoolValue(Parser&, void* val_ptr); + static bool readStringValue(Parser&, void* val_ptr); + static bool readU8Value(Parser&, void* val_ptr); + static bool readS8Value(Parser&, void* val_ptr); + static bool readU16Value(Parser&, void* val_ptr); + static bool readS16Value(Parser&, void* val_ptr); + static bool readU32Value(Parser&, void* val_ptr); + static bool readS32Value(Parser&, void* val_ptr); + static bool readF32Value(Parser&, void* val_ptr); + static bool readF64Value(Parser&, void* val_ptr); + static bool readColor4Value(Parser&, void* val_ptr); + static bool readUIColorValue(Parser&, void* val_ptr); + static bool readUUIDValue(Parser&, void* val_ptr); + static bool readSDValue(Parser&, void* val_ptr); + +private: + static void startElementHandler(void *userData, const char *name, const char **atts); + static void endElementHandler(void *userData, const char *name); + static void characterDataHandler(void *userData, const char *s, int len); + + void startElement(const char *name, const char **atts); + void endElement(const char *name); + void characterData(const char *s, int len); + bool readAttributes(const char **atts); + void processText(); + + Parser::name_stack_t mNameStack; + struct XML_ParserStruct* mParser; + S32 mLastWriteGeneration; + LLXMLNodePtr mLastWrittenChild; + S32 mCurReadDepth; + std::string mCurFileName; + std::string mTextContents; + const char* mCurAttributeValueBegin; + std::vector<S32> mTokenSizeStack; + std::vector<std::string> mScope; + element_start_callback_t mElementCB; + + std::vector<std::pair<LLInitParam::BaseBlock*, S32> > mOutputStack; }; diff --git a/indra/media_plugins/gstreamer010/CMakeLists.txt b/indra/media_plugins/gstreamer010/CMakeLists.txt index 9f0ff654fca67653b5b18769c80f22232c4fedc3..a5127ae5f4b89af3945926c3fe47c5f743501a7c 100644 --- a/indra/media_plugins/gstreamer010/CMakeLists.txt +++ b/indra/media_plugins/gstreamer010/CMakeLists.txt @@ -42,13 +42,6 @@ set(media_plugin_gstreamer010_HEADER_FILES llmediaimplgstreamertriviallogging.h ) -if (${CXX_VERSION_NUMBER} MATCHES "4[23456789].") - # Work around a bad interaction between broken gstreamer headers and - # g++ >= 4.2's increased strictness. - set_source_files_properties(llmediaimplgstreamervidplug.cpp PROPERTIES - COMPILE_FLAGS -Wno-write-strings) -endif (${CXX_VERSION_NUMBER} MATCHES "4[23456789].") - add_library(media_plugin_gstreamer010 SHARED ${media_plugin_gstreamer010_SOURCE_FILES} diff --git a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp index a51a8aa9e1213d7e3ff0433d22ced77de9ddcffc..cdb7f4faeb7e04380f28021037538ff44b9ac956 100644 --- a/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp +++ b/indra/media_plugins/gstreamer010/llmediaimplgstreamervidplug.cpp @@ -48,7 +48,7 @@ GST_DEBUG_CATEGORY_STATIC (gst_slvideo_debug); #define SLV_ALLCAPS GST_VIDEO_CAPS_RGBx SLV_SIZECAPS static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ( - "sink", + (gchar*)"sink", GST_PAD_SINK, GST_PAD_ALWAYS, GST_STATIC_CAPS (SLV_ALLCAPS) @@ -508,18 +508,18 @@ plugin_init (GstPlugin * plugin) some g++ versions buggily avoid __attribute__((constructor)) functions - so we provide an explicit plugin init function. */ +#define PACKAGE (gchar*)"packagehack" +// this macro quietly refers to PACKAGE internally +GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, + GST_VERSION_MINOR, + (gchar*)"private-slvideoplugin", + (gchar*)"SL Video sink plugin", + plugin_init, (gchar*)"1.0", (gchar*)"LGPL", + (gchar*)"Second Life", + (gchar*)"http://www.secondlife.com/"); +#undef PACKAGE void gst_slvideo_init_class (void) { -#define PACKAGE "packagehack" - // this macro quietly refers to PACKAGE internally - static GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, - GST_VERSION_MINOR, - "private-slvideoplugin", - "SL Video sink plugin", - plugin_init, "0.1", GST_LICENSE_UNKNOWN, - "Second Life", - "http://www.secondlife.com/"); -#undef PACKAGE ll_gst_plugin_register_static (&gst_plugin_desc); DEBUGMSG("CLASS INIT"); } diff --git a/indra/media_plugins/webkit/CMakeLists.txt b/indra/media_plugins/webkit/CMakeLists.txt index d576638dd7ed4febb52889b417319a589bf138b7..57478ddf27b107fb622c70e40cf785a76276d2b0 100644 --- a/indra/media_plugins/webkit/CMakeLists.txt +++ b/indra/media_plugins/webkit/CMakeLists.txt @@ -51,9 +51,11 @@ set(media_plugin_webkit_LINK_LIBRARIES # Select which VolumeCatcher implementation to use if (LINUX) - if (PULSEAUDIO) + if (PULSEAUDIO_FOUND) list(APPEND media_plugin_webkit_SOURCE_FILES linux_volume_catcher.cpp) - endif (PULSEAUDIO) + else (PULSEAUDIO_FOUND) + list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp) + endif (PULSEAUDIO_FOUND) list(APPEND media_plugin_webkit_LINK_LIBRARIES ${UI_LIBRARIES} # for glib/GTK ) @@ -67,9 +69,6 @@ elseif (DARWIN) ) elseif (WINDOWS) list(APPEND media_plugin_webkit_SOURCE_FILES windows_volume_catcher.cpp) -else (LINUX) - # All other platforms use the dummy volume catcher for now. - list(APPEND media_plugin_webkit_SOURCE_FILES dummy_volume_catcher.cpp) endif (LINUX) set_source_files_properties(${media_plugin_webkit_HEADER_FILES} diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp index 047146f8f3a96be7379a33831d924f08cafc3486..bd1a44a930702c885b62fd99853dd87e4517d979 100644 --- a/indra/media_plugins/webkit/media_plugin_webkit.cpp +++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp @@ -115,6 +115,7 @@ class MediaPluginWebKit : F32 mBackgroundR; F32 mBackgroundG; F32 mBackgroundB; + std::string mTarget; VolumeCatcher mVolumeCatcher; @@ -303,7 +304,7 @@ class MediaPluginWebKit : LLQtWebKit::getInstance()->enableJavascript( mJavascriptEnabled ); // create single browser window - mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight ); + mBrowserWindowId = LLQtWebKit::getInstance()->createBrowserWindow( mWidth, mHeight, mTarget); // tell LLQtWebKit about the size of the browser window LLQtWebKit::getInstance()->setSize( mBrowserWindowId, mWidth, mHeight ); @@ -313,9 +314,6 @@ class MediaPluginWebKit : // append details to agent string LLQtWebKit::getInstance()->setBrowserAgentId( mUserAgent ); - - // Set up window open behavior - LLQtWebKit::getInstance()->setWindowOpenBehavior(mBrowserWindowId, LLQtWebKit::WOB_SIMULATE_BLANK_HREF_CLICK); #if !LL_QTWEBKIT_USES_PIXMAPS // don't flip bitmap @@ -507,9 +505,9 @@ class MediaPluginWebKit : void onClickLinkHref(const EventType& event) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_href"); - message.setValue("uri", event.getStringValue()); - message.setValue("target", event.getStringValue2()); - message.setValueU32("target_type", event.getLinkType()); + message.setValue("uri", event.getEventUri()); + message.setValue("target", event.getStringValue()); + message.setValue("uuid", event.getStringValue2()); sendMessage(message); } @@ -518,7 +516,7 @@ class MediaPluginWebKit : void onClickLinkNoFollow(const EventType& event) { LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "click_nofollow"); - message.setValue("uri", event.getStringValue()); + message.setValue("uri", event.getEventUri()); sendMessage(message); } @@ -534,6 +532,42 @@ class MediaPluginWebKit : // message.setValueBoolean("dead", (event.getIntValue() != 0)) sendMessage(message); } + + //////////////////////////////////////////////////////////////////////////////// + // virtual + void onWindowCloseRequested(const EventType& event) + { + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "close_request"); + message.setValue("uuid", event.getStringValue()); + sendMessage(message); + } + + //////////////////////////////////////////////////////////////////////////////// + // virtual + void onWindowGeometryChangeRequested(const EventType& event) + { + int x, y, width, height; + event.getRectValue(x, y, width, height); + + // This sometimes gets called with a zero-size request. Don't pass these along. + if(width > 0 && height > 0) + { + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER, "geometry_change"); + message.setValue("uuid", event.getStringValue()); + message.setValueS32("x", x); + message.setValueS32("y", y); + message.setValueS32("width", width); + message.setValueS32("height", height); + sendMessage(message); + } + } + + //////////////////////////////////////////////////////////////////////////////// + // virtual + std::string onRequestFilePicker( const EventType& eventIn ) + { + return blockingPickFile(); + } LLQtWebKit::EKeyboardModifier decodeModifiers(std::string &modifiers) { @@ -679,6 +713,26 @@ class MediaPluginWebKit : } } + + std::string mPickedFile; + + std::string blockingPickFile(void) + { + mPickedFile.clear(); + + LLPluginMessage message(LLPLUGIN_MESSAGE_CLASS_MEDIA, "pick_file"); + message.setValueBoolean("blocking_request", true); + + // The "blocking_request" key in the message means this sendMessage call will block until a response is received. + sendMessage(message); + + return mPickedFile; + } + + void onPickFileResponse(const std::string &file) + { + mPickedFile = file; + } }; @@ -817,6 +871,8 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) { if(message_name == "init") { + mTarget = message_in.getValue("target"); + // This is the media init message -- all necessary data for initialization should have been received. if(initBrowser()) { @@ -1036,10 +1092,14 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) LLQtWebKit::getInstance()->userAction( mBrowserWindowId, LLQtWebKit::UA_EDIT_PASTE ); checkEditState(); } + if(message_name == "pick_file_response") + { + onPickFileResponse(message_in.getValue("file")); + } else { // std::cerr << "MediaPluginWebKit::receiveMessage: unknown media message: " << message_string << std::endl; - }; + } } else if(message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER) { @@ -1139,6 +1199,17 @@ void MediaPluginWebKit::receiveMessage(const char *message_string) } } } + else if(message_name == "proxy_window_opened") + { + std::string target = message_in.getValue("target"); + std::string uuid = message_in.getValue("uuid"); + LLQtWebKit::getInstance()->proxyWindowOpened(mBrowserWindowId, target, uuid); + } + else if(message_name == "proxy_window_closed") + { + std::string uuid = message_in.getValue("uuid"); + LLQtWebKit::getInstance()->proxyWindowClosed(mBrowserWindowId, uuid); + } else { // std::cerr << "MediaPluginWebKit::receiveMessage: unknown media_browser message: " << message_string << std::endl; diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index 917513587c8e94b4f1c78148a5e4cd0b5f93062b..e9fb23d19e75743957a9e05f50dc1a226827fbda 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -94,6 +94,7 @@ set(viewer_SOURCE_FILES llbottomtray.cpp llbox.cpp llbreadcrumbview.cpp + llbrowsernotification.cpp llbuycurrencyhtml.cpp llcallbacklist.cpp llcallfloater.cpp @@ -216,7 +217,6 @@ set(viewer_SOURCE_FILES llfloatertos.cpp llfloateruipreview.cpp llfloaterurlentry.cpp - llfloatervoicedevicesettings.cpp llfloatervoiceeffect.cpp llfloaterwater.cpp llfloaterwhitelistentry.cpp @@ -234,6 +234,7 @@ set(viewer_SOURCE_FILES llgroupiconctrl.cpp llgrouplist.cpp llgroupmgr.cpp + llhints.cpp llhomelocationresponder.cpp llhudeffect.cpp llhudeffectbeam.cpp @@ -303,6 +304,7 @@ set(viewer_SOURCE_FILES llnotificationalerthandler.cpp llnotificationgrouphandler.cpp llnotificationhandlerutil.cpp + llnotificationhinthandler.cpp llnotificationmanager.cpp llnotificationofferhandler.cpp llnotificationscripthandler.cpp @@ -362,6 +364,7 @@ set(viewer_SOURCE_FILES llpaneltiptoast.cpp llpanelvoiceeffect.cpp llpaneltopinfobar.cpp + llpanelvoicedevicesettings.cpp llpanelvolume.cpp llpanelvolumepulldown.cpp llpanelwearing.cpp @@ -743,7 +746,6 @@ set(viewer_HEADER_FILES llfloatertos.h llfloateruipreview.h llfloaterurlentry.h - llfloatervoicedevicesettings.h llfloatervoiceeffect.h llfloaterwater.h llfloaterwhitelistentry.h @@ -761,6 +763,7 @@ set(viewer_HEADER_FILES llgroupiconctrl.h llgrouplist.h llgroupmgr.h + llhints.h llhomelocationresponder.h llhudeffect.h llhudeffectbeam.h @@ -882,6 +885,7 @@ set(viewer_HEADER_FILES llpanelprofileview.h llpanelteleporthistory.h llpaneltiptoast.h + llpanelvoicedevicesettings.h llpanelvoiceeffect.h llpaneltopinfobar.h llpanelvolume.h @@ -1307,6 +1311,7 @@ set(viewer_APPSETTINGS_FILES app_settings/cmd_line.xml app_settings/grass.xml app_settings/high_graphics.xml + app_settings/ignorable_dialogs.xml app_settings/keys.ini app_settings/keywords.ini app_settings/logcontrol.xml diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml index 5f143431deb6c77a5962ffa8c8f5bfc0fd28bb1b..00d69f805e8c9d6512395ebef4ed471e6b465509 100644 --- a/indra/newview/app_settings/cmd_line.xml +++ b/indra/newview/app_settings/cmd_line.xml @@ -296,7 +296,7 @@ <key>multiple</key> <map> <key>desc</key> - <string>Allow multple viewers.</string> + <string>Allow multiple viewers.</string> <key>map-to</key> <string>AllowMultipleViewers</string> </map> diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml index d0e1f62a84a0abdadf453e6d358539cb6d1cac8c..0720ccee49190d109c106e4daa57b9ad92a092f0 100644 --- a/indra/newview/app_settings/ignorable_dialogs.xml +++ b/indra/newview/app_settings/ignorable_dialogs.xml @@ -1,10 +1,10 @@ <?xml version="1.0" ?> <llsd> <map> - <key>FirstAppearance</key> + <key>FirstInventoryOffer</key> <map> <key>Comment</key> - <string>Enables FirstAppearance warning dialog</string> + <string>Shows hint when a person or object offers resident an inventory item</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -12,120 +12,54 @@ <key>Value</key> <integer>1</integer> </map> - <key>FirstAttach</key> - <map> - <key>Comment</key> - <string>Enables FirstAttach warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstBalanceDecrease</key> - <map> - <key>Comment</key> - <string>Enables FirstBalanceDecrease warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstBalanceIncrease</key> - <map> - <key>Comment</key> - <string>Enables FirstBalanceIncrease warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstBuild</key> - <map> - <key>Comment</key> - <string>Enables FirstBuild warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstDebugMenus</key> - <map> - <key>Comment</key> - <string>Enables FirstDebugMenus warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstFlexible</key> - <map> - <key>Comment</key> - <string>Enables FirstFlexible warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstGoTo</key> - <map> - <key>Comment</key> - <string>Enables FirstGoTo warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstInventory</key> - <map> - <key>Comment</key> - <string>Enables FirstInventory warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstLeftClickNoHit</key> - <map> - <key>Comment</key> - <string>Enables FirstLeftClickNoHit warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstMap</key> - <map> - <key>Comment</key> - <string>Enables FirstMap warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstMedia</key> + <key>FirstNotUseDestinationGuide</key> + <map> + <key>Comment</key> + <string>Shows hint when resident doesn't activate destination guide</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstNotUseSidePanel</key> + <map> + <key>Comment</key> + <string>Shows hint when resident doesn't activate side panel</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstNotMoving</key> + <map> + <key>Comment</key> + <string>Shows hint when resident doesn't move</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstReceiveLindens</key> + <map> + <key>Comment</key> + <string>Shows hint when resident receives linden dollars</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> + <key>FirstOtherChatBeforeUser</key> <map> <key>Comment</key> - <string>Enables FirstMedia warning dialog</string> + <string>Shows hint when someone else chats first</string> <key>Persist</key> <integer>1</integer> <key>Type</key> @@ -155,43 +89,11 @@ <key>Value</key> <integer>1</integer> </map> - <key>FirstSculptedPrim</key> - <map> - <key>Comment</key> - <string>Enables FirstSculptedPrim warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> + <key>FirstSit</key> <map> <key>Comment</key> - <string>Enables FirstSit warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstTeleport</key> - <map> - <key>Comment</key> - <string>Enables FirstTeleport warning dialog</string> - <key>Persist</key> - <integer>1</integer> - <key>Type</key> - <string>Boolean</string> - <key>Value</key> - <integer>1</integer> - </map> - <key>FirstVoice</key> - <map> - <key>Comment</key> - <string>Enables FirstVoice warning dialog</string> + <string>Shows hint when someone sits for the first time</string> <key>Persist</key> <integer>1</integer> <key>Type</key> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2a0e23b1dcf01437cb5c0801c42ad59ca990086f..742a20a8491b6b1a0acddfa6ecdcf1c19375ddbc 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -2842,6 +2842,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>EnableUIHints</key> + <map> + <key>Comment</key> + <string>Toggles UI hint popups</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>EnableVoiceChat</key> <map> <key>Comment</key> @@ -3826,7 +3837,7 @@ <key>Comment</key> <string>URL for the web page to display in the Home side panel</string> <key>Persist</key> - <integer>0</integer> + <integer>1</integer> <key>Type</key> <string>String</string> <key>Value</key> @@ -5219,6 +5230,17 @@ <key>Value</key> <real>3.0</real> </map> + <key>MediaEnablePopups</key> + <map> + <key>Comment</key> + <string>If true, enable targeted links and javascript in media to open new media browser windows without a prompt.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>0</integer> + </map> <key>MediaOnAPrimUI</key> <map> <key>Comment</key> @@ -6480,6 +6502,17 @@ <key>Value</key> <real>1.0</real> </map> + <key>MediaBrowserWindowLimit</key> + <map> + <key>Comment</key> + <string>Maximum number of media brower windows that can be open at once (0 for no limit)</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>5</integer> + </map> <key>MediaRollOffRate</key> <map> <key>Comment</key> @@ -7899,6 +7932,17 @@ <key>Value</key> <integer>0</integer> </map> + <key>RenderHighlightSelections</key> + <map> + <key>Comment</key> + <string>Show selection outlines on objects</string> + <key>Persist</key> + <integer>0</integer> + <key>Type</key> + <string>Boolean</string> + <key>Value</key> + <integer>1</integer> + </map> <key>RenderHiddenSelections</key> <map> <key>Comment</key> @@ -8888,7 +8932,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>1</integer> + <integer>0</integer> </map> <key>GroupListShowIcons</key> <map> @@ -12013,5 +12057,38 @@ <key>Value</key> <integer>10</integer> </map> + <key>NotMovingHintTimeout</key> + <map> + <key>Comment</key> + <string>Number of seconds to wait for resident to move before displaying move hint.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>120.0</real> + </map> + <key>DestinationGuideHintTimeout</key> + <map> + <key>Comment</key> + <string>Number of seconds to wait before telling resident about destination guide.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>600.0</real> + </map> + <key>SidePanelHintTimeout</key> + <map> + <key>Comment</key> + <string>Number of seconds to wait before telling resident about side panel.</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>F32</string> + <key>Value</key> + <real>300.0</real> + </map> </map> </llsd> diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index e3fc9d4949a536c3016db05c3269fc4f8d708224..b09dd699ba2b09b491f4b651b838df653e4f77d3 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -61,6 +61,7 @@ RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 WatchdogDisabled 1 1 RenderUseStreamVBO 1 1 +RenderUseFBO 1 1 // // Low Graphics Settings @@ -89,7 +90,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // Mid Graphics Settings @@ -116,7 +117,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // High Graphics Settings (purty) @@ -143,7 +144,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 1 // // Ultra graphics (REALLY PURTY!) @@ -170,6 +171,7 @@ WLSkyDetail 1 128 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderUseFBO 1 1 // // Class Unknown Hardware (unknown) @@ -244,7 +246,8 @@ WindLightUseAtmosShaders 0 0 RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 - +RenderUseFBO 1 0 + // // CPU based feature masks // @@ -550,4 +553,3 @@ list NVIDIA_GeForce_Go_7800 RenderShaderLightingMaxLevel 1 2 list NVIDIA_GeForce_Go_7900 RenderShaderLightingMaxLevel 1 2 - diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 1bad7e5260ba4f486f5038c891577de75515aa4a..4a99280b06fd0cfb556d44ccb52d1355fefe285a 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -60,6 +60,7 @@ RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 WatchdogDisabled 1 1 +RenderUseFBO 1 1 // // Low Graphics Settings @@ -88,7 +89,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // Mid Graphics Settings @@ -115,7 +116,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // High Graphics Settings (purty) @@ -142,7 +143,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 1 // // Ultra graphics (REALLY PURTY!) @@ -169,7 +170,7 @@ WLSkyDetail 1 128 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 1 // // Class Unknown Hardware (unknown) @@ -244,6 +245,7 @@ WindLightUseAtmosShaders 0 0 RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +RenderUseFBO 1 0 // diff --git a/indra/newview/featuretable_mac.txt b/indra/newview/featuretable_mac.txt index 4fba47e3df7e527a494f110705048c067938d24a..67cace7268db8cab5d0a0035c371ecc2711c98a3 100644 --- a/indra/newview/featuretable_mac.txt +++ b/indra/newview/featuretable_mac.txt @@ -60,6 +60,7 @@ Disregard128DefaultDrawDistance 1 1 Disregard96DefaultDrawDistance 1 1 SkyUseClassicClouds 1 1 WatchdogDisabled 1 1 +RenderUseFBO 1 1 // // Low Graphics Settings @@ -87,6 +88,7 @@ VertexShaderEnable 1 0 WindLightUseAtmosShaders 1 0 WLSkyDetail 1 48 SkyUseClassicClouds 1 0 +RenderUseFBO 1 0 // // Mid Graphics Settings @@ -112,6 +114,7 @@ RenderWaterReflections 1 0 VertexShaderEnable 1 1 WindLightUseAtmosShaders 1 0 WLSkyDetail 1 48 +RenderUseFBO 1 0 // // High Graphics Settings (purty) @@ -137,6 +140,7 @@ RenderWaterReflections 1 0 VertexShaderEnable 1 1 WindLightUseAtmosShaders 1 1 WLSkyDetail 1 48 +RenderUseFBO 1 1 // // Ultra graphics (REALLY PURTY!) @@ -162,6 +166,7 @@ RenderWaterReflections 1 1 VertexShaderEnable 1 1 WindLightUseAtmosShaders 1 1 WLSkyDetail 1 128 +RenderUseFBO 1 1 // // Class Unknown Hardware (unknown) @@ -227,6 +232,7 @@ RenderUseImpostors 0 0 RenderVBOEnable 1 0 RenderWaterReflections 0 0 WindLightUseAtmosShaders 0 0 +RenderUseFBO 1 0 // // CPU based feature masks diff --git a/indra/newview/featuretable_solaris.txt b/indra/newview/featuretable_solaris.txt index 0ae463332c532c9cb01f4efe88b9ce5411acb05c..7df75687f213a96191a5f73edbe2511f943b05cd 100644 --- a/indra/newview/featuretable_solaris.txt +++ b/indra/newview/featuretable_solaris.txt @@ -38,6 +38,7 @@ RenderTextureMemoryMultiple 1 1.0 UseOcclusion 1 1 RenderCubeMap 1 1 WatchdogDisabled 1 1 +RenderUseFBO 1 1 // @@ -52,6 +53,7 @@ RenderAvatarMode 1 0 RenderLighting 1 0 RenderObjectBump 1 0 RenderRippleWater 1 0 +RenderUseFBO 1 0 // // Class 1 Hardware @@ -65,6 +67,7 @@ RenderAvatarMode 1 0 RenderLighting 1 0 RenderObjectBump 1 0 RenderRippleWater 1 0 +RenderUseFBO 1 0 // // Class 2 Hardware (make it purty) @@ -76,6 +79,7 @@ RenderAvatarMode 1 1 RenderLighting 1 1 RenderObjectBump 1 1 RenderRippleWater 1 1 +RenderUseFBO 1 1 // // Class 3 Hardware (make it purty) @@ -87,6 +91,7 @@ RenderAvatarMode 1 1 RenderLighting 1 1 RenderObjectBump 1 1 RenderRippleWater 1 1 +RenderUseFBO 1 1 // // No Pixel Shaders available @@ -114,6 +119,7 @@ RenderParticleCount 1 1024 RenderTerrainDetail 1 0 RenderCubeMap 0 0 UseOcclusion 0 0 +RenderUseFBO 1 0 list low diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index 9b901022c412142d744d461930fe54dc537977cb..1e83bc73a59cd211cc04a580f19206d0ddd03b44 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -59,6 +59,7 @@ SkyUseClassicClouds 1 1 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderUseFBO 1 1 WatchdogDisabled 1 1 RenderUseStreamVBO 1 1 @@ -89,7 +90,7 @@ SkyUseClassicClouds 1 0 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // Mid Graphics Settings @@ -116,7 +117,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 0 // // High Graphics Settings (purty) @@ -143,7 +144,7 @@ WLSkyDetail 1 48 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 - +RenderUseFBO 1 1 // // Ultra graphics (REALLY PURTY!) @@ -170,6 +171,7 @@ WLSkyDetail 1 128 RenderDeferred 1 0 RenderDeferredSSAO 1 0 RenderShadowDetail 1 0 +RenderUseFBO 1 1 // // Class Unknown Hardware (unknown) @@ -244,6 +246,7 @@ WindLightUseAtmosShaders 0 0 RenderDeferred 0 0 RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 +RenderUseFBO 1 0 // // CPU based feature masks diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index b202cb5098829d3c77fcb4d701f21fbcdff94a69..c9bd7851ed5c610a046130665cea1e94f8de9b79 100644 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -38,6 +38,7 @@ #include "llcallingcard.h" #include "llchannelmanager.h" #include "llconsole.h" +#include "llfirstuse.h" #include "llfloatercamera.h" #include "llfloaterreg.h" #include "llfloatertools.h" @@ -194,8 +195,6 @@ LLAgent::LLAgent() : mbFlagsDirty(FALSE), mbFlagsNeedReset(FALSE), - mbJump(FALSE), - mAutoPilot(FALSE), mAutoPilotFlyOnStop(FALSE), mAutoPilotTargetGlobal(), @@ -227,8 +226,9 @@ LLAgent::LLAgent() : mControlsTakenPassedOnCount[i] = 0; } - mListener.reset(new LLAgentListener(*this)); + + mMoveTimer.stop(); } // Requires gSavedSettings to be initialized. @@ -237,6 +237,8 @@ LLAgent::LLAgent() : //----------------------------------------------------------------------------- void LLAgent::init() { + mMoveTimer.start(); + gSavedSettings.declareBOOL("SlowMotionAnimation", FALSE, "Declared in code", FALSE); gSavedSettings.getControl("SlowMotionAnimation")->getSignal()->connect(boost::bind(&handleSlowMotionAnimation, _2)); @@ -301,6 +303,9 @@ void LLAgent::ageChat() //----------------------------------------------------------------------------- void LLAgent::moveAt(S32 direction, bool reset) { + mMoveTimer.reset(); + LLFirstUse::notMoving(false); + // age chat timer so it fades more quickly when you are intentionally moving ageChat(); @@ -326,6 +331,9 @@ void LLAgent::moveAt(S32 direction, bool reset) //----------------------------------------------------------------------------- void LLAgent::moveAtNudge(S32 direction) { + mMoveTimer.reset(); + LLFirstUse::notMoving(false); + // age chat timer so it fades more quickly when you are intentionally moving ageChat(); @@ -348,6 +356,9 @@ void LLAgent::moveAtNudge(S32 direction) //----------------------------------------------------------------------------- void LLAgent::moveLeft(S32 direction) { + mMoveTimer.reset(); + LLFirstUse::notMoving(false); + // age chat timer so it fades more quickly when you are intentionally moving ageChat(); @@ -370,6 +381,9 @@ void LLAgent::moveLeft(S32 direction) //----------------------------------------------------------------------------- void LLAgent::moveLeftNudge(S32 direction) { + mMoveTimer.reset(); + LLFirstUse::notMoving(false); + // age chat timer so it fades more quickly when you are intentionally moving ageChat(); @@ -392,6 +406,9 @@ void LLAgent::moveLeftNudge(S32 direction) //----------------------------------------------------------------------------- void LLAgent::moveUp(S32 direction) { + mMoveTimer.reset(); + LLFirstUse::notMoving(false); + // age chat timer so it fades more quickly when you are intentionally moving ageChat(); @@ -537,6 +554,9 @@ void LLAgent::toggleFlying() { BOOL fly = !gAgent.getFlying(); + gAgent.mMoveTimer.reset(); + LLFirstUse::notMoving(false); + gAgent.setFlying( fly ); gAgentCamera.resetView(); } @@ -1534,6 +1554,11 @@ void LLAgent::propagate(const F32 dt) //----------------------------------------------------------------------------- void LLAgent::updateAgentPosition(const F32 dt, const F32 yaw_radians, const S32 mouse_x, const S32 mouse_y) { + if (mMoveTimer.getStarted() && mMoveTimer.getElapsedTimeF32() > gSavedSettings.getF32("NotMovingHintTimeout")) + { + LLFirstUse::notMoving(); + } + propagate(dt); // static S32 cameraUpdateCount = 0; @@ -2962,12 +2987,6 @@ void LLAgent::processScriptControlChange(LLMessageSystem *msg, void **) total_count++; } } - - // Any control taken? If so, might be first time. - //if (total_count > 0) - //{ - //LLFirstUse::useOverrideKeys(); - //} } else { @@ -3431,16 +3450,16 @@ void LLAgent::setTeleportState(ETeleportState state) break; case TELEPORT_MOVING: - // We're outa here. Save "back" slurl. - LLAgentUI::buildSLURL(mTeleportSourceSLURL); + // We're outa here. Save "back" slurl. + LLAgentUI::buildSLURL(mTeleportSourceSLURL); break; case TELEPORT_ARRIVING: - // First two position updates after a teleport tend to be weird - LLViewerStats::getInstance()->mAgentPositionSnaps.mCountOfNextUpdatesToIgnore = 2; - - // Let the interested parties know we've teleported. - LLViewerParcelMgr::getInstance()->onTeleportFinished(false, getPositionGlobal()); + // First two position updates after a teleport tend to be weird + LLViewerStats::getInstance()->mAgentPositionSnaps.mCountOfNextUpdatesToIgnore = 2; + + // Let the interested parties know we've teleported. + LLViewerParcelMgr::getInstance()->onTeleportFinished(false, getPositionGlobal()); break; default: diff --git a/indra/newview/llagent.h b/indra/newview/llagent.h index 30685461b9f6b07df851fda6168a59c2417b6a54..6c598d5d7199f4452222c6113164fc2576241018 100644 --- a/indra/newview/llagent.h +++ b/indra/newview/llagent.h @@ -264,6 +264,7 @@ class LLAgent : public LLOldEvents::LLObservable private: LLFrameTimer mFidgetTimer; LLFrameTimer mFocusObjectFadeTimer; + LLFrameTimer mMoveTimer; F32 mNextFidgetTime; S32 mCurrentFidget; @@ -359,14 +360,6 @@ class LLAgent : public LLOldEvents::LLObservable private: BOOL mIsBusy; - //-------------------------------------------------------------------- - // Jump - //-------------------------------------------------------------------- -public: - BOOL getJump() const { return mbJump; } -private: - BOOL mbJump; - //-------------------------------------------------------------------- // Grab //-------------------------------------------------------------------- diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 5e75237180fa5ab543029c76093206b6a5161a9b..8c8cb245cbd8f8327e467e7c7dbb4b9e36197e8c 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -262,6 +262,7 @@ const F64 FRAME_STALL_THRESHOLD = 1.0; LLTimer gRenderStartTime; LLFrameTimer gForegroundTime; +LLFrameTimer gLoggedInTime; LLTimer gLogoutTimer; static const F32 LOGOUT_REQUEST_TIME = 6.f; // this will be cut short by the LogoutReply msg. F32 gLogoutMaxTime = LOGOUT_REQUEST_TIME; @@ -360,19 +361,19 @@ bool create_text_segment_icon_from_url_match(LLUrlMatch* match,LLTextBase* base) if(gAgent.isInGroup(match_id, TRUE)) { - LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>(); + LLGroupIconCtrl::Params icon_params; icon_params.group_id = match_id; icon_params.rect = LLRect(0, 16, 16, 0); icon_params.visible = true; - icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params); + icon = LLUICtrlFactory::instance().create<LLGroupIconCtrl>(icon_params); } else { - LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>(); + LLAvatarIconCtrl::Params icon_params; icon_params.avatar_id = match_id; icon_params.rect = LLRect(0, 16, 16, 0); icon_params.visible = true; - icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params); + icon = LLUICtrlFactory::instance().create<LLAvatarIconCtrl>(icon_params); } LLInlineViewSegment::Params params; @@ -592,6 +593,7 @@ LLAppViewer::LLAppViewer() : setupErrorHandling(); sInstance = this; + gLoggedInTime.stop(); } LLAppViewer::~LLAppViewer() @@ -4276,6 +4278,7 @@ void LLAppViewer::pingMainloopTimeout(const std::string& state, F32 secs) void LLAppViewer::handleLoginComplete() { + gLoggedInTime.start(); 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 c5cac6827c8a1f1a6d6400f615446bc8fb1463c9..56d88f07c867d9202202e8eccf077b4cdc61d44b 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -308,6 +308,7 @@ extern U32 gFrameStalls; extern LLTimer gRenderStartTime; extern LLFrameTimer gForegroundTime; +extern LLFrameTimer gLoggedInTime; extern F32 gLogoutMaxTime; extern LLTimer gLogoutTimer; diff --git a/indra/newview/llaudiosourcevo.cpp b/indra/newview/llaudiosourcevo.cpp index 40eb5ebcd1cdc08d6be8b5cfd9e51a8f48294983..b37aba6c1520b10d6493967d7cf6a93ddd0be5d6 100644 --- a/indra/newview/llaudiosourcevo.cpp +++ b/indra/newview/llaudiosourcevo.cpp @@ -35,11 +35,8 @@ LLAudioSourceVO::LLAudioSourceVO(const LLUUID &sound_id, const LLUUID& owner_id, const F32 gain, LLViewerObject *objectp) : LLAudioSource(sound_id, owner_id, gain, LLAudioEngine::AUDIO_TYPE_SFX), - mObjectp(objectp), - mActualGain(gain) + mObjectp(objectp) { - setAmbient(FALSE); - updateGain(); update(); } @@ -54,18 +51,18 @@ LLAudioSourceVO::~LLAudioSourceVO() void LLAudioSourceVO::setGain(const F32 gain) { - mActualGain = llclamp(gain, 0.f, 1.f); - updateGain(); + mGain = llclamp(gain, 0.f, 1.f); } -void LLAudioSourceVO::updateGain() +void LLAudioSourceVO::updateMute() { - if (!mObjectp) + if (!mObjectp || mObjectp->isDead()) { + mSourceMuted = true; return; } - BOOL mute = FALSE; + bool mute = false; LLVector3d pos_global; if (mObjectp->isAttachment()) @@ -84,21 +81,21 @@ void LLAudioSourceVO::updateGain() { pos_global = mObjectp->getPositionGlobal(); } - + if (!LLViewerParcelMgr::getInstance()->canHearSound(pos_global)) { - mute = TRUE; + mute = true; } if (!mute) { if (LLMuteList::getInstance()->isMuted(mObjectp->getID())) { - mute = TRUE; + mute = true; } else if (LLMuteList::getInstance()->isMuted(mOwnerID, LLMute::flagObjectSounds)) { - mute = TRUE; + mute = true; } else if (mObjectp->isAttachment()) { @@ -110,24 +107,38 @@ void LLAudioSourceVO::updateGain() if (parent && LLMuteList::getInstance()->isMuted(parent->getID())) { - mute = TRUE; + mute = true; } } } - if (!mute) + if (mute != mSourceMuted) { - mGain = mActualGain; - } - else - { - mGain = 0.f; + mSourceMuted = mute; + if (mSourceMuted) + { + // Stop the sound. + this->play(LLUUID::null); + } + else + { + // Muted sounds keep there data at all times, because + // it's the place where the audio UUID is stored. + // However, it's possible that mCurrentDatap is + // NULL when this source did only preload sounds. + if (mCurrentDatap) + { + // Restart the sound. + this->play(mCurrentDatap->getID()); + } + } } } - void LLAudioSourceVO::update() { + updateMute(); + if (!mObjectp) { return; @@ -139,7 +150,11 @@ void LLAudioSourceVO::update() return; } - updateGain(); + if (mSourceMuted) + { + return; + } + if (mObjectp->isHUDAttachment()) { mPositionGlobal = gAgentCamera.getCameraPositionGlobal(); diff --git a/indra/newview/llaudiosourcevo.h b/indra/newview/llaudiosourcevo.h index a68f58a4b2c6e0b6ae9d8ecdf938a6e8078e2fac..f1d8ef4528507b6be516b70cc54ac5edbc551b96 100644 --- a/indra/newview/llaudiosourcevo.h +++ b/indra/newview/llaudiosourcevo.h @@ -42,11 +42,10 @@ class LLAudioSourceVO : public LLAudioSource /*virtual*/ void setGain(const F32 gain); private: - void updateGain(); + void updateMute(); private: LLPointer<LLViewerObject> mObjectp; - F32 mActualGain; // The "real" gain, when not off due to parcel effects }; #endif // LL_LLAUDIOSOURCEVO_H diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index b9ae976e58f2c59bb42bd585283a060910524490..79b0c63b387b2892bcf389ebabb384c88c5072af 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -49,6 +49,7 @@ #include "llfloaterpay.h" #include "llfloaterworldmap.h" #include "llgiveinventory.h" +#include "llinventorybridge.h" #include "llinventorymodel.h" // for gInventory.findCategoryUUIDForType #include "llinventorypanel.h" #include "llimview.h" // for gIMMgr @@ -443,17 +444,27 @@ namespace action_give_inventory } /** - * Checks My Inventory visibility. + * @return active inventory panel, or NULL if there's no such panel */ - static bool is_give_inventory_acceptable() + static LLInventoryPanel* get_active_inventory_panel() { LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); if (!active_panel) { active_panel = get_outfit_editor_inventory_panel(); - if (!active_panel) return false; } + return active_panel; + } + + /** + * Checks My Inventory visibility. + */ + static bool is_give_inventory_acceptable() + { + LLInventoryPanel* active_panel = get_active_inventory_panel(); + if (!active_panel) return false; + // check selection in the panel const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); if (inventory_selected_uuids.empty()) return false; // nothing selected @@ -543,12 +554,8 @@ namespace action_give_inventory return; } - LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); - if (!active_panel) - { - active_panel = get_outfit_editor_inventory_panel(); - if (!active_panel) return; - } + LLInventoryPanel* active_panel = get_active_inventory_panel(); + if (!active_panel) return; const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); if (inventory_selected_uuids.empty()) @@ -632,12 +639,8 @@ namespace action_give_inventory llassert(avatar_names.size() == avatar_uuids.size()); - LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); - if (!active_panel) - { - active_panel = get_outfit_editor_inventory_panel(); - if (!active_panel) return; - } + LLInventoryPanel* active_panel = get_active_inventory_panel(); + if (!active_panel) return; const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); if (inventory_selected_uuids.empty()) @@ -672,6 +675,53 @@ void LLAvatarActions::shareWithAvatars() LLNotificationsUtil::add("ShareNotification"); } + +// static +bool LLAvatarActions::canShareSelectedItems(LLInventoryPanel* inv_panel /* = NULL*/) +{ + using namespace action_give_inventory; + + if (!inv_panel) + { + LLInventoryPanel* active_panel = get_active_inventory_panel(); + if (!active_panel) return false; + inv_panel = active_panel; + } + + // check selection in the panel + LLFolderView* root_folder = inv_panel->getRootFolder(); + const uuid_set_t inventory_selected_uuids = root_folder->getSelectionList(); + if (inventory_selected_uuids.empty()) return false; // nothing selected + + bool can_share = true; + uuid_set_t::const_iterator it = inventory_selected_uuids.begin(); + const uuid_set_t::const_iterator it_end = inventory_selected_uuids.end(); + for (; it != it_end; ++it) + { + LLViewerInventoryCategory* inv_cat = gInventory.getCategory(*it); + // any category can be offered. + if (inv_cat) + { + continue; + } + + // check if inventory item can be given + LLFolderViewItem* item = root_folder->getItemByID(*it); + if (!item) return false; + LLInvFVBridge* bridge = dynamic_cast<LLInvFVBridge*>(item->getListener()); + if (bridge && bridge->canShare()) + { + continue; + } + + // there are neither item nor category in inventory + can_share = false; + break; + } + + return can_share; +} + // static void LLAvatarActions::toggleBlock(const LLUUID& id) { diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index 6313ae075931c75d8216223ff27521736891d9f5..44bd3778da2e8ee4893aa965cf7dd5ab0aadd19d 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -34,6 +34,8 @@ #include <string> #include <vector> +class LLInventoryPanel; + /** * Friend-related actions (add, remove, offer teleport, etc) */ @@ -183,6 +185,15 @@ class LLAvatarActions */ static bool canOfferTeleport(const uuid_vec_t& ids); + /** + * Checks whether all items selected in the given inventory panel can be shared + * + * @param inv_panel Inventory panel to get selection from. If NULL, the active inventory panel is used. + * + * @return false if the selected items cannot be shared or the active inventory panel cannot be obtained + */ + static bool canShareSelectedItems(LLInventoryPanel* inv_panel = NULL); + private: static bool callbackAddFriend(const LLSD& notification, const LLSD& response); static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response); diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp index 5241f20c0e1d764ef54aeef4d8c695779b150931..09083dcb981fcd68c4eb3a13013431ef90161d4f 100644 --- a/indra/newview/llavatarlist.cpp +++ b/indra/newview/llavatarlist.cpp @@ -509,7 +509,7 @@ LLAvalineListItem::LLAvalineListItem(bool hide_number/* = true*/) : LLAvatarList , mIsHideNumber(hide_number) { // should not use buildPanel from the base class to ensure LLAvalineListItem::postBuild is called. - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); + buildFromFile( "panel_avatar_list_item.xml"); } BOOL LLAvalineListItem::postBuild() diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp index 8fc4ad6763c8c33992572b3e399c142571146e56..c54913a3e1a8f76468970fbff8d25adad577c2ef 100644 --- a/indra/newview/llavatarlistitem.cpp +++ b/indra/newview/llavatarlistitem.cpp @@ -70,11 +70,12 @@ LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/) mOnlineStatus(E_UNKNOWN), mShowInfoBtn(true), mShowProfileBtn(true), - mShowPermissions(false) + mShowPermissions(false), + mHovered(false) { if (not_from_ui_factory) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_list_item.xml"); + buildFromFile("panel_avatar_list_item.xml"); } // *NOTE: mantipov: do not use any member here. They can be uninitialized here in case instance // is created from the UICtrlFactory @@ -449,20 +450,20 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) //info btn width + padding S32 info_btn_width = avatar_item->mProfileBtn->getRect().mLeft - avatar_item->mInfoBtn->getRect().mLeft; - // edit their objects permission icon width + padding - S32 permission_edit_theirs_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mIconPermissionEditTheirs->getRect().mLeft; - - // edit my objects permission icon width + padding - S32 permission_edit_mine_width = avatar_item->mIconPermissionEditTheirs->getRect().mLeft - avatar_item->mIconPermissionEditMine->getRect().mLeft; + // online permission icon width + padding + S32 permission_online_width = avatar_item->mInfoBtn->getRect().mLeft - avatar_item->mIconPermissionOnline->getRect().mLeft; // map permission icon width + padding - S32 permission_map_width = avatar_item->mIconPermissionEditMine->getRect().mLeft - avatar_item->mIconPermissionMap->getRect().mLeft; + S32 permission_map_width = avatar_item->mIconPermissionOnline->getRect().mLeft - avatar_item->mIconPermissionMap->getRect().mLeft; - // online permission icon width + padding - S32 permission_online_width = avatar_item->mIconPermissionMap->getRect().mLeft - avatar_item->mIconPermissionOnline->getRect().mLeft; + // edit my objects permission icon width + padding + S32 permission_edit_mine_width = avatar_item->mIconPermissionMap->getRect().mLeft - avatar_item->mIconPermissionEditMine->getRect().mLeft; + + // edit their objects permission icon width + padding + S32 permission_edit_theirs_width = avatar_item->mIconPermissionEditMine->getRect().mLeft - avatar_item->mIconPermissionEditTheirs->getRect().mLeft; // last interaction time textbox width + padding - S32 last_interaction_time_width = avatar_item->mIconPermissionOnline->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft; + S32 last_interaction_time_width = avatar_item->mIconPermissionEditTheirs->getRect().mLeft - avatar_item->mLastInteractionTime->getRect().mLeft; // avatar icon width + padding S32 icon_width = avatar_item->mAvatarName->getRect().mLeft - avatar_item->mAvatarIcon->getRect().mLeft; @@ -474,10 +475,10 @@ void LLAvatarListItem::initChildrenWidths(LLAvatarListItem* avatar_item) sChildrenWidths[--index] = icon_width; sChildrenWidths[--index] = 0; // for avatar name we don't need its width, it will be calculated as "left available space" sChildrenWidths[--index] = last_interaction_time_width; - sChildrenWidths[--index] = permission_online_width; - sChildrenWidths[--index] = permission_map_width; - sChildrenWidths[--index] = permission_edit_mine_width; sChildrenWidths[--index] = permission_edit_theirs_width; + sChildrenWidths[--index] = permission_edit_mine_width; + sChildrenWidths[--index] = permission_map_width; + sChildrenWidths[--index] = permission_online_width; sChildrenWidths[--index] = info_btn_width; sChildrenWidths[--index] = profile_btn_width; sChildrenWidths[--index] = speaking_indicator_width; diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h index ffb988b2abd131c0155608f73e295f1c7d5eb465..52187284eb1d7ee3baa7118a08349d6bc8c2513d 100644 --- a/indra/newview/llavatarlistitem.h +++ b/indra/newview/llavatarlistitem.h @@ -143,10 +143,10 @@ class LLAvatarListItem : public LLPanel, public LLFriendObserver ALIC_SPEAKER_INDICATOR, ALIC_PROFILE_BUTTON, ALIC_INFO_BUTTON, - ALIC_PERMISSION_EDIT_THEIRS, - ALIC_PERMISSION_EDIT_MINE, - ALIC_PERMISSION_MAP, ALIC_PERMISSION_ONLINE, + ALIC_PERMISSION_MAP, + ALIC_PERMISSION_EDIT_MINE, + ALIC_PERMISSION_EDIT_THEIRS, ALIC_INTERACTION_TIME, ALIC_NAME, ALIC_ICON, diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp index 29f4311ea48f7c9d0cb3e6b5f0f70eaa6caa6182..29c2b7565e3da65c8adbc3143f7f22f4fb751c76 100644 --- a/indra/newview/llbottomtray.cpp +++ b/indra/newview/llbottomtray.cpp @@ -41,6 +41,7 @@ #include "llagentcamera.h" #include "llchiclet.h" #include "llfloatercamera.h" +#include "llhints.h" #include "llimfloater.h" // for LLIMFloater #include "llnearbychatbar.h" #include "llspeakbutton.h" @@ -104,10 +105,6 @@ template class LLBottomTray* LLSingleton<class LLBottomTray>::getInstance(); namespace { const std::string& PANEL_CHICLET_NAME = "chiclet_list_panel"; - const std::string& PANEL_CHATBAR_NAME = "chat_bar"; - const std::string& PANEL_MOVEMENT_NAME = "movement_panel"; - const std::string& PANEL_CAMERA_NAME = "cam_panel"; - const std::string& PANEL_GESTURE_NAME = "gesture_panel"; S32 get_panel_min_width(LLLayoutStack* stack, LLView* panel) { @@ -115,7 +112,7 @@ namespace llassert(stack); if ( stack && panel && panel->getVisible() ) { - stack->getPanelMinSize(panel->getName(), &minimal_width, NULL); + stack->getPanelMinSize(panel->getName(), &minimal_width); } return minimal_width; } @@ -126,7 +123,7 @@ namespace llassert(stack); if ( stack && panel && panel->getVisible() ) { - stack->getPanelMaxSize(panel->getName(), &max_width, NULL); + stack->getPanelMaxSize(panel->getName(), &max_width); } return max_width; } @@ -148,26 +145,30 @@ class LLBottomTrayLite public: LLBottomTrayLite() : mNearbyChatBar(NULL), + mChatBarContainer(NULL), mGesturePanel(NULL) { mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_bottomtray_lite.xml"); + buildFromFile("panel_bottomtray_lite.xml"); // Necessary for focus movement among child controls setFocusRoot(TRUE); } BOOL postBuild() { - mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar"); + mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar"); + mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel"); mGesturePanel = getChild<LLPanel>("gesture_panel"); // Hide "show_nearby_chat" button - LLLineEditor* chat_box = mNearbyChatBar->getChatBox(); - LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat"); - S32 delta_width = show_btn->getRect().getWidth(); - show_btn->setVisible(FALSE); - chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight()); - + if (mNearbyChatBar) + { + LLLineEditor* chat_box = mNearbyChatBar->getChatBox(); + LLUICtrl* show_btn = mNearbyChatBar->getChild<LLUICtrl>("show_nearby_chat"); + S32 delta_width = show_btn->getRect().getWidth(); + show_btn->setVisible(FALSE); + chat_box->reshape(chat_box->getRect().getWidth() + delta_width, chat_box->getRect().getHeight()); + } return TRUE; } @@ -180,6 +181,7 @@ class LLBottomTrayLite } LLNearbyChatBar* mNearbyChatBar; + LLLayoutPanel* mChatBarContainer; LLPanel* mGesturePanel; }; @@ -188,17 +190,18 @@ LLBottomTray::LLBottomTray(const LLSD&) mSpeakPanel(NULL), mSpeakBtn(NULL), mNearbyChatBar(NULL), - mToolbarStack(NULL) -, mMovementButton(NULL) -, mResizeState(RS_NORESIZE) -, mBottomTrayContextMenu(NULL) -, mCamButton(NULL) -, mBottomTrayLite(NULL) -, mIsInLiteMode(false) -, mDragStarted(false) -, mDraggedItem(NULL) -, mLandingTab(NULL) -, mCheckForDrag(false) + mChatBarContainer(NULL), + mToolbarStack(NULL), + mMovementButton(NULL), + mResizeState(RS_NORESIZE), + mBottomTrayContextMenu(NULL), + mCamButton(NULL), + mBottomTrayLite(NULL), + mIsInLiteMode(false), + mDragStarted(false), + mDraggedItem(NULL), + mLandingTab(NULL), + mCheckForDrag(false) { // Firstly add ourself to IMSession observers, so we catch session events // before chiclets do that. @@ -206,7 +209,7 @@ LLBottomTray::LLBottomTray(const LLSD&) mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL); - LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml"); + buildFromFile("panel_bottomtray.xml"); LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraItem, _2)); @@ -225,6 +228,7 @@ LLBottomTray::LLBottomTray(const LLSD&) } mImageDragIndication = LLUI::getUIImage(getString("DragIndicationImageName")); + mDesiredNearbyChatWidth = mNearbyChatBar ? mNearbyChatBar->getRect().getWidth() : 0; } LLBottomTray::~LLBottomTray() @@ -237,7 +241,7 @@ LLBottomTray::~LLBottomTray() if (mNearbyChatBar) { // store custom width of chatbar panel. - S32 custom_width = mNearbyChatBar->getRect().getWidth(); + S32 custom_width = mChatBarContainer->getRect().getWidth(); gSavedSettings.setS32("ChatBarCustomWidth", custom_width); } @@ -432,7 +436,7 @@ S32 LLBottomTray::notifyParent(const LLSD& info) const std::string& name = info["view_name"]; // expected only resize of nearby chatbar - if (mNearbyChatBar->getName() != name) return LLPanel::notifyParent(info); + if (mChatBarContainer->getName() != name) return LLPanel::notifyParent(info); const S32 new_width = info["new_width"]; @@ -462,8 +466,8 @@ void LLBottomTray::updateContextMenu(S32 x, S32 y, MASK mask) { LLUICtrl* edit_box = mNearbyChatBar->getChild<LLUICtrl>("chat_box"); - S32 local_x = x - mNearbyChatBar->getRect().mLeft - edit_box->getRect().mLeft; - S32 local_y = y - mNearbyChatBar->getRect().mBottom - edit_box->getRect().mBottom; + S32 local_x = x - mChatBarContainer->getRect().mLeft - edit_box->getRect().mLeft; + S32 local_y = y - mChatBarContainer->getRect().mBottom - edit_box->getRect().mBottom; bool in_edit_box = edit_box->pointInView(local_x, local_y); @@ -516,10 +520,14 @@ BOOL LLBottomTray::postBuild() mBottomTrayContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_bottomtray.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); gMenuHolder->addChild(mBottomTrayContextMenu); + mNearbyChatBar = findChild<LLNearbyChatBar>("chat_bar"); + LLHints::registerHintTarget("chat_bar", mNearbyChatBar->LLView::getHandle()); + + mChatBarContainer = getChild<LLLayoutPanel>("chat_bar_layout_panel"); - mNearbyChatBar = getChild<LLNearbyChatBar>("chat_bar"); mToolbarStack = getChild<LLLayoutStack>("toolbar_stack"); mMovementButton = getChild<LLButton>("movement_btn"); + LLHints::registerHintTarget("move_btn", mMovementButton->getHandle()); mCamButton = getChild<LLButton>("camera_btn"); setRightMouseDownCallback(boost::bind(&LLBottomTray::showBottomTrayContextMenu,this, _2, _3,_4)); @@ -762,7 +770,7 @@ void LLBottomTray::loadButtonsOrder() } // Nearbychat is not stored in order settings file, but it must be the first of the panels, so moving it // manually here - mToolbarStack->movePanel(mNearbyChatBar, NULL, true); + mToolbarStack->movePanel(mChatBarContainer, NULL, true); } void LLBottomTray::onDraggableButtonMouseUp(LLUICtrl* ctrl, S32 x, S32 y) @@ -961,14 +969,15 @@ void LLBottomTray::reshape(S32 width, S32 height, BOOL called_from_parent) // we can not to do this from postBuild because reshape is called from parent view on startup // creation after it and reset width according to resize logic. static bool needs_restore_custom_state = true; - if (mNearbyChatBar && needs_restore_custom_state) + if (mChatBarContainer && needs_restore_custom_state) { // restore custom width of chatbar panel. S32 new_width = gSavedSettings.getS32("ChatBarCustomWidth"); if (new_width > 0) { + mDesiredNearbyChatWidth = new_width; processChatbarCustomization(new_width); - mNearbyChatBar->reshape(new_width, mNearbyChatBar->getRect().getHeight()); + mChatBarContainer->reshape(new_width, mChatBarContainer->getRect().getHeight()); } needs_restore_custom_state = false; } @@ -982,6 +991,9 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); + // There are four steps of processing width decrease. If in one of them required width was reached, + // further are not needed. + // 1. Decreasing width of chiclet panel. if (chiclet_panel_width > chiclet_panel_min_width) { // we have some space to decrease chiclet panel @@ -1007,8 +1019,15 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) << llendl; } - const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); - const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mNearbyChatBar); + S32 buttons_freed_width = 0; + // 2. Decreasing width of buttons. + if (still_should_be_processed) + { + processShrinkButtons(delta_width, buttons_freed_width); + } + // 3. Decreasing width of nearby chat. + const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mChatBarContainer); + const S32 chatbar_panel_width = mChatBarContainer->getRect().getWidth(); if (still_should_be_processed && chatbar_panel_width > chatbar_panel_min_width) { // we have some space to decrease chatbar panel @@ -1021,7 +1040,11 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) still_should_be_processed = delta_width < 0; - mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mNearbyChatBar->getRect().getHeight()); + // chatbar should only be shrunk here, not stretched + if(delta_panel > 0) + { + mChatBarContainer->reshape(mNearbyChatBar->getRect().getWidth() - delta_panel, mChatBarContainer->getRect().getHeight()); + } log(mNearbyChatBar, "after processing panel decreasing via nearby chatbar panel"); @@ -1032,11 +1055,9 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) } S32 extra_shrink_width = 0; - S32 buttons_freed_width = 0; + // 4. Hiding buttons if needed. if (still_should_be_processed) { - processShrinkButtons(delta_width, buttons_freed_width); - processHideButtons(delta_width, buttons_freed_width); if (delta_width < 0) @@ -1048,10 +1069,15 @@ S32 LLBottomTray::processWidthDecreased(S32 delta_width) if (buttons_freed_width > 0) { - log(mNearbyChatBar, "before applying compensative width"); - mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() + buttons_freed_width, mNearbyChatBar->getRect().getHeight() ); - log(mNearbyChatBar, "after applying compensative width"); - lldebugs << buttons_freed_width << llendl; + S32 nearby_needed_width = mDesiredNearbyChatWidth - mNearbyChatBar->getRect().getWidth(); + if (nearby_needed_width > 0) + { + S32 compensative_width = nearby_needed_width > buttons_freed_width ? buttons_freed_width : nearby_needed_width; + log(mNearbyChatBar, "before applying compensative width"); + mChatBarContainer->reshape(mChatBarContainer->getRect().getWidth() + compensative_width, mChatBarContainer->getRect().getHeight() ); + log(mNearbyChatBar, "after applying compensative width"); + lldebugs << buttons_freed_width << llendl; + } } } @@ -1065,18 +1091,12 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) const S32 chiclet_panel_width = mChicletPanel->getParent()->getRect().getWidth(); static const S32 chiclet_panel_min_width = mChicletPanel->getMinWidth(); - const S32 chatbar_panel_width = mNearbyChatBar->getRect().getWidth(); - static const S32 chatbar_panel_min_width = get_panel_min_width(mToolbarStack, mNearbyChatBar); - static const S32 chatbar_panel_max_width = get_panel_max_width(mToolbarStack, mNearbyChatBar); - - const S32 chatbar_available_shrink_width = chatbar_panel_width - chatbar_panel_min_width; const S32 available_width_chiclet = chiclet_panel_width - chiclet_panel_min_width; // how many room we have to show hidden buttons - S32 total_available_width = delta_width + chatbar_available_shrink_width + available_width_chiclet; + S32 total_available_width = delta_width + available_width_chiclet; lldebugs << "Processing extending, available width:" - << ", chatbar - " << chatbar_available_shrink_width << ", chiclets - " << available_width_chiclet << ", total - " << total_available_width << llendl; @@ -1085,8 +1105,6 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) processShowButtons(available_width); - processExtendButtons(available_width); - // if we have to show/extend some buttons but resized delta width is not enough... S32 processed_width = total_available_width - available_width; if (processed_width > delta_width) @@ -1097,21 +1115,7 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) // 1. use delta width of resizing required_to_process_width -= delta_width; - // 2. use width available via decreasing of nearby chat panel - S32 chatbar_shrink_width = required_to_process_width; - if (chatbar_available_shrink_width < chatbar_shrink_width) - { - chatbar_shrink_width = chatbar_available_shrink_width; - } - - log(mNearbyChatBar, "increase width: before applying compensative width"); - mNearbyChatBar->reshape(mNearbyChatBar->getRect().getWidth() - chatbar_shrink_width, mNearbyChatBar->getRect().getHeight() ); - if (mNearbyChatBar) log(mNearbyChatBar, "after applying compensative width"); - lldebugs << chatbar_shrink_width << llendl; - - // 3. use width available via decreasing of chiclet panel - required_to_process_width -= chatbar_shrink_width; - + // 2. use width available via decreasing of chiclet panel if (required_to_process_width > 0) { mChicletPanel->getParent()->reshape(mChicletPanel->getParent()->getRect().getWidth() - required_to_process_width, mChicletPanel->getParent()->getRect().getHeight()); @@ -1126,10 +1130,10 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) // how many space can nearby chatbar take? - S32 chatbar_panel_width_ = mNearbyChatBar->getRect().getWidth(); - if (delta_width > 0 && chatbar_panel_width_ < chatbar_panel_max_width) + S32 chatbar_panel_width_ = mChatBarContainer->getRect().getWidth(); + if (delta_width > 0 && chatbar_panel_width_ < mDesiredNearbyChatWidth) { - S32 delta_panel_max = chatbar_panel_max_width - chatbar_panel_width_; + S32 delta_panel_max = mDesiredNearbyChatWidth - chatbar_panel_width_; S32 delta_panel = llmin(delta_width, delta_panel_max); lldebugs << "Unprocesed delta width: " << delta_width << ", can be applied to chatbar: " << delta_panel_max @@ -1137,9 +1141,13 @@ void LLBottomTray::processWidthIncreased(S32 delta_width) << llendl; delta_width -= delta_panel_max; - mNearbyChatBar->reshape(chatbar_panel_width_ + delta_panel, mNearbyChatBar->getRect().getHeight()); + mChatBarContainer->reshape(chatbar_panel_width_ + delta_panel, mChatBarContainer->getRect().getHeight()); log(mNearbyChatBar, "applied unprocessed delta width"); } + if (delta_width > 0) + { + processExtendButtons(delta_width); + } } void LLBottomTray::processShowButtons(S32& available_width) @@ -1259,7 +1267,7 @@ void LLBottomTray::processShrinkButtons(S32& required_width, S32& buttons_freed_ S32 panel_min_width = 0; std::string panel_name = mSpeakPanel->getName(); - bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width, NULL); + bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width); if (!success) { lldebugs << "Panel was not found to get its min width: " << panel_name << llendl; @@ -1305,7 +1313,7 @@ void LLBottomTray::processShrinkButton(EResizeState processed_object_type, S32& S32 panel_width = panel->getRect().getWidth(); S32 panel_min_width = 0; std::string panel_name = panel->getName(); - bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width, NULL); + bool success = mToolbarStack->getPanelMinSize(panel_name, &panel_min_width); S32 possible_shrink_width = panel_width - panel_min_width; if (!success) @@ -1597,7 +1605,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible { // Calculate the possible shrunk width as difference between current and minimal widths const S32 chatbar_shrunk_width = - mNearbyChatBar->getRect().getWidth() - get_panel_min_width(mToolbarStack, mNearbyChatBar); + mChatBarContainer->getRect().getWidth() - get_panel_min_width(mToolbarStack, mChatBarContainer); S32 sum_of_min_widths = get_panel_min_width(mToolbarStack, mSpeakPanel); S32 sum_of_curr_widths = get_curr_width(mSpeakPanel); @@ -1617,7 +1625,7 @@ bool LLBottomTray::setVisibleAndFitWidths(EResizeState object_type, bool visible // Minimal width of current panel S32 minimal_width = 0; - mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width, NULL); + mToolbarStack->getPanelMinSize(cur_panel->getName(), &minimal_width); if ( (available_width + possible_shrunk_width) >= minimal_width) { @@ -1694,10 +1702,12 @@ void LLBottomTray::processChatbarCustomization(S32 new_width) { if (NULL == mNearbyChatBar) return; - const S32 delta_width = mNearbyChatBar->getRect().getWidth() - new_width; + const S32 delta_width = mChatBarContainer->getRect().getWidth() - new_width; if (delta_width == 0) return; + mDesiredNearbyChatWidth = new_width; + LLView * chiclet_layout_panel = mChicletPanel->getParent(); const S32 chiclet_min_width = get_panel_min_width(mToolbarStack, chiclet_layout_panel); const S32 chiclet_panel_width = chiclet_layout_panel->getRect().getWidth(); diff --git a/indra/newview/llbottomtray.h b/indra/newview/llbottomtray.h index 1197c5a10a8db9446f3caf56d861cfa4fc3307d7..8d8a42c553c41929404628b84b88d3d80ffa5d27 100644 --- a/indra/newview/llbottomtray.h +++ b/indra/newview/llbottomtray.h @@ -27,20 +27,18 @@ #ifndef LL_LLBOTTOMPANEL_H #define LL_LLBOTTOMPANEL_H -#include "llmenugl.h" - #include "llpanel.h" #include "llimview.h" -#include "llcombobox.h" +#include "llbutton.h" class LLChicletPanel; -class LLLineEditor; class LLLayoutStack; -class LLNotificationChiclet; class LLSpeakButton; class LLNearbyChatBar; class LLIMChiclet; class LLBottomTrayLite; +class LLLayoutPanel; +class LLMenuGL; // Build time optimization, generate once in .cpp file #ifndef LLBOTTOMTRAY_CPP @@ -439,10 +437,15 @@ class LLBottomTray void onContextMenuItemClicked(const LLSD& userdata); bool onContextMenuItemEnabled(const LLSD& userdata); + // Either default or saved after user's manual resize width of nearby chat. + // Nearby chat will not always have it, because sometimes it can be shrunk on resize, + // but when possible it will be restored back to this value. + S32 mDesiredNearbyChatWidth; LLChicletPanel* mChicletPanel; LLPanel* mSpeakPanel; LLSpeakButton* mSpeakBtn; LLNearbyChatBar* mNearbyChatBar; + LLLayoutPanel* mChatBarContainer; LLLayoutStack* mToolbarStack; LLMenuGL* mBottomTrayContextMenu; LLButton* mCamButton; diff --git a/indra/newview/llbrowsernotification.cpp b/indra/newview/llbrowsernotification.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d6a813d60806ddefbbed85abc3a20d0eddb506a0 --- /dev/null +++ b/indra/newview/llbrowsernotification.cpp @@ -0,0 +1,48 @@ +/** + * @file llbrowsernotification.cpp + * @brief Notification Handler Class for browser popups + * + * $LicenseInfo:firstyear=2000&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" // must be first include + +#include "llnotificationhandler.h" +#include "llnotifications.h" +#include "llfloaterreg.h" +#include "llmediactrl.h" + +using namespace LLNotificationsUI; + +bool LLBrowserNotification::processNotification(const LLSD& notify) +{ + LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID()); + if (!notification) return false; + + LLMediaCtrl* media_instance = LLMediaCtrl::getInstance(notification->getPayload()["media_id"].asUUID()); + if (media_instance) + { + media_instance->showNotification(notification); + } + return false; +} diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index c78f73c3b88d1e41ab9a19201a7383a17ca27667..b11bba58e43a45c093115876c60f8e04c36185dd 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -141,7 +141,7 @@ BOOL LLCallFloater::postBuild() childSetAction("leave_call_btn", boost::bind(&LLCallFloater::leaveCall, this)); - mNonAvatarCaller = getChild<LLNonAvatarCaller>("non_avatar_caller"); + mNonAvatarCaller = findChild<LLNonAvatarCaller>("non_avatar_caller"); mNonAvatarCaller->setVisible(FALSE); LLView *anchor_panel = LLBottomTray::getInstance()->getChild<LLView>("speak_flyout_btn"); diff --git a/indra/newview/llchatbar.cpp b/indra/newview/llchatbar.cpp index d251931ecabd1e482a1ba5ad39159be339fff949..6e58be817457ce26729690843eff82968b96e5f7 100644 --- a/indra/newview/llchatbar.cpp +++ b/indra/newview/llchatbar.cpp @@ -565,6 +565,10 @@ void LLChatBar::sendChatFromViewer(const std::string &utf8text, EChatType type, void LLChatBar::sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate) { + // as soon as we say something, we no longer care about teaching the user + // how to chat + gWarningSettings.setBOOL("FirstOtherChatBeforeUser", FALSE); + // Look for "/20 foo" channel chats. S32 channel = 0; LLWString out_text = stripChannelNumber(wtext, &channel); @@ -685,14 +689,14 @@ class LLChatHandler : public LLCommandHandler } else { - S32 channel = tokens[0].asInteger(); + S32 channel = tokens[0].asInteger(); // VWR-19499 Restrict function to chat channels greater than 0. if ((channel > 0) && (channel < 2147483647)) { retval = true; // Say mesg on channel - std::string mesg = tokens[1].asString(); - send_chat_from_viewer(mesg, CHAT_TYPE_NORMAL, channel); + std::string mesg = tokens[1].asString(); + send_chat_from_viewer(mesg, CHAT_TYPE_NORMAL, channel); } else { diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index dfb1db523dbe21b33674a65f10ed4d42fe7cc583..eb10add254197b9a3b62bba3e0d99d57169de8ea 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -101,7 +101,7 @@ class LLChatHistoryHeader: public LLPanel static LLChatHistoryHeader* createInstance(const std::string& file_name) { LLChatHistoryHeader* pInstance = new LLChatHistoryHeader; - LLUICtrlFactory::getInstance()->buildPanel(pInstance, file_name); + pInstance->buildFromFile(file_name); return pInstance; } @@ -396,7 +396,7 @@ class LLChatHistoryHeader: public LLPanel return; } - LLTextBase* name = getChild<LLTextBase>("user_name"); + LLTextBox* name = getChild<LLTextBox>("user_name"); LLRect sticky_rect = name->getRect(); S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3); sInfoCtrl->setOrigin(icon_x, sticky_rect.getCenterY() - sInfoCtrl->getRect().getHeight() / 2 ) ; @@ -496,12 +496,17 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p) const S32 NEW_TEXT_NOTICE_HEIGHT = 20; - LLPanel::Params panel_p; + LLLayoutPanel::Params panel_p; panel_p.name = "spacer"; panel_p.background_visible = false; panel_p.has_border = false; panel_p.mouse_opaque = false; - stackp->addPanel(LLUICtrlFactory::create<LLPanel>(panel_p), 0, 30, S32_MAX, S32_MAX, true, false, LLLayoutStack::ANIMATE); + panel_p.min_dim = 30; + panel_p.max_dim = S32_MAX; + panel_p.auto_resize = true; + panel_p.user_resize = false; + + stackp->addPanel(LLUICtrlFactory::create<LLLayoutPanel>(panel_p), LLLayoutStack::ANIMATE); panel_p.name = "new_text_notice_holder"; LLRect new_text_notice_rect = getLocalRect(); @@ -510,7 +515,10 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p) panel_p.background_opaque = true; panel_p.background_visible = true; panel_p.visible = false; - mMoreChatPanel = LLUICtrlFactory::create<LLPanel>(panel_p); + panel_p.min_dim = 0; + panel_p.auto_resize = false; + panel_p.user_resize = false; + mMoreChatPanel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); LLTextBox::Params text_p(p.more_chat_text); text_p.rect = mMoreChatPanel->getLocalRect(); @@ -519,7 +527,7 @@ void LLChatHistory::initFromParams(const LLChatHistory::Params& p) mMoreChatText = LLUICtrlFactory::create<LLTextBox>(text_p, mMoreChatPanel); mMoreChatText->setClickedCallback(boost::bind(&LLChatHistory::onClickMoreText, this)); - stackp->addPanel(mMoreChatPanel, 0, 0, S32_MAX, S32_MAX, false, false, LLLayoutStack::ANIMATE); + stackp->addPanel(mMoreChatPanel, LLLayoutStack::ANIMATE); } diff --git a/indra/newview/llchathistory.h b/indra/newview/llchathistory.h index 112a33f1ee1e09fd9df2468a3a8de6349136be67..ac48d7bf29b82640ba1865dd9860525a7127b304 100644 --- a/indra/newview/llchathistory.h +++ b/indra/newview/llchathistory.h @@ -138,7 +138,7 @@ class LLChatHistory : public LLUICtrl S32 mTopHeaderPad; S32 mBottomHeaderPad; - LLPanel* mMoreChatPanel; + class LLLayoutPanel* mMoreChatPanel; LLTextBox* mMoreChatText; LLTextEditor* mEditor; typedef std::set<std::string> unread_chat_source_t; diff --git a/indra/newview/llchatitemscontainerctrl.cpp b/indra/newview/llchatitemscontainerctrl.cpp index 67b7ac53838147914e018c4f27cce0fb941668bf..e78bdbe25ca1c382b5ac91340284e793d0ea8aef 100644 --- a/indra/newview/llchatitemscontainerctrl.cpp +++ b/indra/newview/llchatitemscontainerctrl.cpp @@ -51,7 +51,7 @@ static const S32 msg_height_pad = 5; LLNearbyChatToastPanel* LLNearbyChatToastPanel::createInstance() { LLNearbyChatToastPanel* item = new LLNearbyChatToastPanel(); - LLUICtrlFactory::getInstance()->buildPanel(item, "panel_chat_item.xml"); + item->buildFromFile("panel_chat_item.xml"); item->setFollows(FOLLOWS_NONE); return item; } diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp index 268d9958d196e8ce7bf48f76807707cd288b34b1..a42677845ecc0b7c00254bcb580aba3bc531fdc4 100644 --- a/indra/newview/llcompilequeue.cpp +++ b/indra/newview/llcompilequeue.cpp @@ -89,7 +89,6 @@ LLFloaterScriptQueue::LLFloaterScriptQueue(const LLSD& key) : mDone(false), mMono(false) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_queue.xml", FALSE); } // Destroys the object diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp index 07ff3a91a12c96f50cec96e7cc17f17b01bd5ca1..06b145e8c8b3917679b70d9b018bb8507ff1390f 100644 --- a/indra/newview/llfasttimerview.cpp +++ b/indra/newview/llfasttimerview.cpp @@ -117,7 +117,7 @@ BOOL LLFastTimerView::handleRightMouseDown(S32 x, S32 y, MASK mask) { 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; + mPrintStats = LLFastTimer::NamedTimer::HISTORY_NUM - mScrollIndex - bar_idx; } return FALSE; } @@ -134,6 +134,17 @@ LLFastTimer::NamedTimer* LLFastTimerView::getLegendID(S32 y) return NULL; } +BOOL LLFastTimerView::handleDoubleClick(S32 x, S32 y, MASK mask) +{ + for(timer_tree_iterator_t it = begin_timer_tree(LLFastTimer::NamedTimer::getRootNamedTimer()); + it != end_timer_tree(); + ++it) + { + (*it)->setCollapsed(false); + } + return TRUE; +} + BOOL LLFastTimerView::handleMouseDown(S32 x, S32 y, MASK mask) { @@ -947,7 +958,7 @@ void LLFastTimerView::draw() { legend_stat += ", "; } - first = true; + first = false; legend_stat += idp->getName(); if (idp->getCollapsed()) @@ -974,8 +985,7 @@ void LLFastTimerView::draw() U64 ticks; if (mPrintStats > 0) { - S32 hidx = (mPrintStats - 1) - mScrollIndex; - ticks = idp->getHistoricalCount(hidx); + ticks = idp->getHistoricalCount(mPrintStats); } else { diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h index 54025267eec9c13916e096adc02cb499ad9920a3..1d844454c87ef19c10ac2e0d6be3126f2999e1ad 100644 --- a/indra/newview/llfasttimerview.h +++ b/indra/newview/llfasttimerview.h @@ -49,6 +49,7 @@ class LLFastTimerView : public LLFloater public: virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); + virtual BOOL handleDoubleClick(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); diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 5796e676185ff76b36aa8bd6da40b5256e1b9353..3981b887ade3c4230965fb8707ce418416fd334f 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -161,22 +161,13 @@ class LLFavoriteLandmarkButton : public LLButton if (!region_name.empty()) { - LLToolTip::Params params; std::string extra_message = llformat("%s (%d, %d, %d)", region_name.c_str(), mLandmarkInfoGetter.getPosX(), mLandmarkInfoGetter.getPosY(), mLandmarkInfoGetter.getPosZ()); + LLToolTip::Params params; params.message = llformat("%s\n%s", getLabelSelected().c_str(), extra_message.c_str()); - - LLRect rect = calcScreenRect(); - LLFontGL* standart_font = LLFontGL::getFontSansSerif(); - if(standart_font) - { - S32 w = llmax((S32)(standart_font->getWidthF32(getLabelSelected())+0.5),(S32)(standart_font->getWidthF32(extra_message)+0.5)); - rect.mRight = rect.mLeft + w; - params.max_width = w; - } - - params.sticky_rect = rect; + params.max_width = 1000; + params.sticky_rect = calcScreenRect(); LLToolTipMgr::instance().show(params); } @@ -299,20 +290,6 @@ class LLFavoriteLandmarkToggleableMenu : public LLToggleableMenu return TRUE; } - void setVisible(BOOL b) - { - // Overflow menu shouldn't hide when it still has focus. See EXT-4217. - if (!b && hasFocus()) - return; - LLToggleableMenu::setVisible(b); - setFocus(b); - } - - void onFocusLost() - { - setVisible(FALSE); - } - protected: LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p): LLToggleableMenu(p) @@ -661,16 +638,23 @@ void LLFavoritesBarCtrl::draw() } } -LLXMLNodePtr LLFavoritesBarCtrl::getButtonXMLNode() +const LLButton::Params& LLFavoritesBarCtrl::getButtonParams() { - LLXMLNodePtr buttonXMLNode = NULL; - bool success = LLUICtrlFactory::getLayeredXMLNode("favorites_bar_button.xml", buttonXMLNode); - if (!success) + static LLButton::Params button_params; + static bool params_initialized = false; + + if (!params_initialized) { - llwarns << "Failed to create Favorites Bar button from favorites_bar_button.xml" << llendl; - buttonXMLNode = NULL; + LLXMLNodePtr button_xml_node; + if(LLUICtrlFactory::getLayeredXMLNode("favorites_bar_button.xml", button_xml_node)) + { + LLXUIParser parser; + parser.readXUI(button_xml_node, button_params, "favorites_bar_button.xml"); + } + params_initialized = true; } - return buttonXMLNode; + + return button_params; } void LLFavoritesBarCtrl::updateButtons() @@ -682,11 +666,8 @@ void LLFavoritesBarCtrl::updateButtons() return; } - static LLXMLNodePtr buttonXMLNode = getButtonXMLNode(); - if (buttonXMLNode.isNull()) - { - return; - } + const LLButton::Params& button_params = getButtonParams(); + if(mItems.empty()) { mBarLabel->setVisible(TRUE); @@ -762,7 +743,7 @@ void LLFavoritesBarCtrl::updateButtons() int j = first_changed_item_index; for (; j < mItems.count(); j++) { - last_new_button = createButton(mItems[j], buttonXMLNode, last_right_edge); + last_new_button = createButton(mItems[j], button_params, last_right_edge); if (!last_new_button) { break; @@ -780,8 +761,7 @@ void LLFavoritesBarCtrl::updateButtons() //or there are some new favorites, or width had been changed // so if we need to display chevron button, we must update dropdown items too. mUpdateDropDownItems = true; - S32 buttonHGap = 2; // default value - buttonXMLNode->getAttributeS32("left", buttonHGap); + S32 buttonHGap = button_params.rect.left; // default value LLRect rect; // Chevron button should stay right aligned rect.setOriginAndSize(getRect().mRight - mChevronButton->getRect().getWidth() - buttonHGap, 0, @@ -796,7 +776,6 @@ void LLFavoritesBarCtrl::updateButtons() LLToggleableMenu* overflow_menu = static_cast <LLToggleableMenu*> (mPopupMenuHandle.get()); if (overflow_menu && overflow_menu->getVisible()) { - overflow_menu->setFocus(FALSE); overflow_menu->setVisible(FALSE); if (mUpdateDropDownItems) showDropDownMenu(); @@ -808,12 +787,10 @@ void LLFavoritesBarCtrl::updateButtons() } } -LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem> item, LLXMLNodePtr &buttonXMLNode, S32 x_offset) +LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem> item, const LLButton::Params& button_params, S32 x_offset) { - S32 def_button_width = 120; - buttonXMLNode->getAttributeS32("width", def_button_width); - S32 button_x_delta = 2; // default value - buttonXMLNode->getAttributeS32("left", button_x_delta); + S32 def_button_width = button_params.rect.width; + S32 button_x_delta = button_params.rect.left; // default value S32 curr_x = x_offset; /** @@ -831,13 +808,16 @@ LLButton* LLFavoritesBarCtrl::createButton(const LLPointer<LLViewerInventoryItem { return NULL; } - fav_btn = LLUICtrlFactory::defaultBuilder<LLFavoriteLandmarkButton>(buttonXMLNode, this, NULL); + LLButton::Params fav_btn_params(button_params); + fav_btn = LLUICtrlFactory::create<LLFavoriteLandmarkButton>(fav_btn_params); if (NULL == fav_btn) { llwarns << "Unable to create LLFavoriteLandmarkButton widget: " << item->getName() << llendl; return NULL; } + addChild(fav_btn); + LLRect butt_rect (fav_btn->getRect()); fav_btn->setLandmarkID(item->getUUID()); butt_rect.setOriginAndSize(curr_x + button_x_delta, fav_btn->getRect().mBottom, width, fav_btn->getRect().getHeight()); @@ -916,8 +896,6 @@ void LLFavoritesBarCtrl::showDropDownMenu() if (menu) { - // Release focus to allow changing of visibility. - menu->setFocus(FALSE); if (!menu->toggleVisibility()) return; @@ -1098,6 +1076,14 @@ void LLFavoritesBarCtrl::doToSelected(const LLSD& userdata) { gInventory.removeItem(mSelectedItemID); } + + // Pop-up the overflow menu again (it gets hidden whenever the user clicks a context menu item). + // See EXT-4217 and STORM-207. + LLToggleableMenu* menu = (LLToggleableMenu*) mPopupMenuHandle.get(); + if (menu && !menu->getVisible()) + { + showDropDownMenu(); + } } BOOL LLFavoritesBarCtrl::isClipboardPasteable() const diff --git a/indra/newview/llfavoritesbar.h b/indra/newview/llfavoritesbar.h index bdb1b8288fbc79493cde186dff1d64d92759bdab..37645523f6771937827fc8700d6728c7f904edc5 100644 --- a/indra/newview/llfavoritesbar.h +++ b/indra/newview/llfavoritesbar.h @@ -71,8 +71,8 @@ class LLFavoritesBarCtrl : public LLUICtrl, public LLInventoryObserver protected: void updateButtons(); - LLButton* createButton(const LLPointer<LLViewerInventoryItem> item, LLXMLNodePtr &root, S32 x_offset ); - LLXMLNodePtr getButtonXMLNode(); + LLButton* createButton(const LLPointer<LLViewerInventoryItem> item, const LLButton::Params& button_params, S32 x_offset ); + const LLButton::Params& getButtonParams(); BOOL collectFavoriteItems(LLInventoryModel::item_array_t &items); void onButtonClick(LLUUID id); diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp index 4d5b08243a55585133dbbde91361c8b832a98b07..dd08706f4ff5ed839c02d24413e87b483b54daf5 100644 --- a/indra/newview/llfirstuse.cpp +++ b/indra/newview/llfirstuse.cpp @@ -30,7 +30,7 @@ // library includes #include "indra_constants.h" -#include "llnotificationsutil.h" +#include "llnotifications.h" // viewer includes #include "llagent.h" // for gAgent.inPrelude() @@ -39,7 +39,7 @@ #include "llappviewer.h" #include "lltracker.h" -/* + // static std::set<std::string> LLFirstUse::sConfigVariables; @@ -70,211 +70,109 @@ void LLFirstUse::resetFirstUse() gWarningSettings.setBOOL(*iter, TRUE); } } -*/ -/* - -// Called whenever the viewer detects that your balance went up -void LLFirstUse::useBalanceIncrease(S32 delta) -{ - if (gWarningSettings.getBOOL("FirstBalanceIncrease")) - { - gWarningSettings.setBOOL("FirstBalanceIncrease", FALSE); - - LLSD args; - args["AMOUNT"] = llformat("%d",delta); - LLNotificationsUtil::add("FirstBalanceIncrease", args); - } -} - - -// Called whenever the viewer detects your balance went down -void LLFirstUse::useBalanceDecrease(S32 delta) -{ - if (gWarningSettings.getBOOL("FirstBalanceDecrease")) - { - gWarningSettings.setBOOL("FirstBalanceDecrease", FALSE); - - LLSD args; - args["AMOUNT"] = llformat("%d",-delta); - LLNotificationsUtil::add("FirstBalanceDecrease", args); - } -} - // static -void LLFirstUse::useSit() +void LLFirstUse::otherAvatarChatFirst(bool enable) { - // Our orientation island uses sitting to teach vehicle driving - // so just never show this message. JC - //if (gWarningSettings.getBOOL("FirstSit")) - //{ - // gWarningSettings.setBOOL("FirstSit", FALSE); - // - // LLNotificationsUtil::add("FirstSit"); - //} + firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "chat_bar").with("direction", "top_right").with("distance", 24)); } // static -void LLFirstUse::useMap() +void LLFirstUse::sit(bool enable) { - if (gWarningSettings.getBOOL("FirstMap")) - { - gWarningSettings.setBOOL("FirstMap", FALSE); - - LLNotificationsUtil::add("FirstMap"); - } + firstUseNotification("FirstSit", enable, "HintSit", LLSD(), LLSD().with("target", "stand_btn").with("direction", "top")); } // static -void LLFirstUse::useGoTo() +void LLFirstUse::newInventory(bool enable) { - // nothing for now JC + // turning this off until bug EXP-62 can be fixed (inventory hint appears for new users when their initial inventory is acquired) + // firstUseNotification("FirstInventoryOffer", enable, "HintInventory", LLSD(), LLSD().with("target", "inventory_btn").with("direction", "left")); } // static -void LLFirstUse::useBuild() +void LLFirstUse::useSandbox() { - if (gWarningSettings.getBOOL("FirstBuild")) - { - gWarningSettings.setBOOL("FirstBuild", FALSE); - - LLNotificationsUtil::add("FirstBuild"); - } + firstUseNotification("FirstSandbox", true, "FirstSandbox", LLSD().with("HOURS", SANDBOX_CLEAN_FREQ).with("TIME", SANDBOX_FIRST_CLEAN_HOUR)); } - - */ -/* -// static -void LLFirstUse::useLeftClickNoHit() -{ - if (gWarningSettings.getBOOL("FirstLeftClickNoHit")) - { - gWarningSettings.setBOOL("FirstLeftClickNoHit", FALSE); - LLNotificationsUtil::add("FirstLeftClickNoHit"); - } -} -*/ -/* // static -void LLFirstUse::useTeleport() +void LLFirstUse::notUsingDestinationGuide(bool enable) { - if (gWarningSettings.getBOOL("FirstTeleport")) - { - LLVector3d teleportDestination = LLTracker::getTrackedPositionGlobal(); - if(teleportDestination != LLVector3d::zero) - { - gWarningSettings.setBOOL("FirstTeleport", FALSE); - - LLNotificationsUtil::add("FirstTeleport"); - } - } + // not doing this yet + //firstUseNotification("FirstNotUseDestinationGuide", enable, "HintDestinationGuide", LLSD(), LLSD().with("target", "dest_guide_btn").with("direction", "left")); } -*/ -// static -void LLFirstUse::useOverrideKeys() -{ - // Our orientation island uses key overrides to teach vehicle driving - // so don't show this message until you get off OI. JC - if (!gAgent.inPrelude()) - { - if (gWarningSettings.getBOOL("FirstOverrideKeys")) - { - gWarningSettings.setBOOL("FirstOverrideKeys", FALSE); - LLNotificationsUtil::add("FirstOverrideKeys"); - } - } -} -/* // static -void LLFirstUse::useAttach() +void LLFirstUse::notUsingSidePanel(bool enable) { - // nothing for now + // not doing this yet + //firstUseNotification("FirstNotUseSidePanel", enable, "HintSidePanel", LLSD(), LLSD().with("target", "side_panel_btn").with("direction", "left")); } // static -void LLFirstUse::useAppearance() +void LLFirstUse::notMoving(bool enable) { - if (gWarningSettings.getBOOL("FirstAppearance")) - { - gWarningSettings.setBOOL("FirstAppearance", FALSE); - - LLNotificationsUtil::add("FirstAppearance"); - } + firstUseNotification("FirstNotMoving", enable, "HintMove", LLSD(), LLSD().with("target", "move_btn").with("direction", "top")); } // static -void LLFirstUse::useInventory() +void LLFirstUse::receiveLindens(bool enable) { - if (gWarningSettings.getBOOL("FirstInventory")) - { - gWarningSettings.setBOOL("FirstInventory", FALSE); - - LLNotificationsUtil::add("FirstInventory"); - } + firstUseNotification("FirstReceiveLindens", enable, "HintLindenDollar", LLSD(), LLSD().with("target", "linden_balance").with("direction", "bottom")); } -*/ -// static -void LLFirstUse::useSandbox() +//static +void LLFirstUse::firstUseNotification(const std::string& control_var, bool enable, const std::string& notification_name, LLSD args, LLSD payload) { - if (gWarningSettings.getBOOL("FirstSandbox")) - { - gWarningSettings.setBOOL("FirstSandbox", FALSE); + init(); - LLSD args; - args["HOURS"] = llformat("%d",SANDBOX_CLEAN_FREQ); - args["TIME"] = llformat("%d",SANDBOX_FIRST_CLEAN_HOUR); - LLNotificationsUtil::add("FirstSandbox", args); - } -} -/* -// static -void LLFirstUse::useFlexible() -{ - if (gWarningSettings.getBOOL("FirstFlexible")) + if (enable) { - gWarningSettings.setBOOL("FirstFlexible", FALSE); - - LLNotificationsUtil::add("FirstFlexible"); - } -} + if (gSavedSettings.getBOOL("EnableUIHints")) + { + LL_DEBUGS("LLFirstUse") << "Trigger first use notification " << notification_name << LL_ENDL; -// static -void LLFirstUse::useDebugMenus() -{ - if (gWarningSettings.getBOOL("FirstDebugMenus")) + // if notification doesn't already exist and this notification hasn't been disabled... + if (gWarningSettings.getBOOL(control_var)) + { // create new notification + LLNotifications::instance().add(LLNotification::Params().name(notification_name).substitutions(args).payload(payload.with("control_var", control_var))); + } + } + } + else { - gWarningSettings.setBOOL("FirstDebugMenus", FALSE); - - LLNotificationsUtil::add("FirstDebugMenus"); + LL_DEBUGS("LLFirstUse") << "Disabling first use notification " << notification_name << LL_ENDL; + LLNotifications::instance().cancelByName(notification_name); + // redundantly clear settings var here, in case there are no notifications to cancel + gWarningSettings.setBOOL(control_var, FALSE); } + } // static -void LLFirstUse::useSculptedPrim() +void LLFirstUse::init() { - if (gWarningSettings.getBOOL("FirstSculptedPrim")) + static bool initialized = false; + if (!initialized) { - gWarningSettings.setBOOL("FirstSculptedPrim", FALSE); - - LLNotificationsUtil::add("FirstSculptedPrim"); - + LLNotifications::instance().getChannel("Hints")->connectChanged(&processNotification); } + initialized = true; } -// static -void LLFirstUse::useMedia() +//static +bool LLFirstUse::processNotification(const LLSD& notify) { - if (gWarningSettings.getBOOL("FirstMedia")) + if (notify["sigtype"].asString() == "delete") { - gWarningSettings.setBOOL("FirstMedia", FALSE); - - // Popup removed as a short-term fix for EXT-1643. - // Ultimately, the plan is to kill all First Use dialogs - //LLNotificationsUtil::add("FirstMedia"); + LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID()); + if (notification) + { + // disable any future notifications + gWarningSettings.setBOOL(notification->getPayload()["control_var"], FALSE); + } } + return false; } -*/ diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h index 771e38ed33100f05257015c9bcf0a629e5cdf022..275f134400fdb57ede1041754adb734219bd42bd 100644 --- a/indra/newview/llfirstuse.h +++ b/indra/newview/llfirstuse.h @@ -70,10 +70,13 @@ object or from inventory. 14. First time you create/edit a sculpted prim. */ +class LLNotification; + + class LLFirstUse { public: -/* + // Add a config variable to be reset on resetFirstUse() static void addConfigVariable(const std::string& var); @@ -81,35 +84,21 @@ class LLFirstUse static void disableFirstUse(); static void resetFirstUse(); - // These methods are called each time the appropriate action is - // taken. The functions themselves handle only showing the dialog - // the first time, or subsequent times if the user wishes. - static void useBalanceIncrease(S32 delta); - static void useBalanceDecrease(S32 delta); - static void useSit(); - static void useMap(); - static void useGoTo(); - static void useBuild(); -// static void useLeftClickNoHit(); - static void useTeleport(); -*/ - static void useOverrideKeys(); -/* - static void useAttach(); - static void useAppearance(); - static void useInventory(); - */ + static void otherAvatarChatFirst(bool enable = true); + static void sit(bool enable = true); + static void notUsingDestinationGuide(bool enable = true); + static void notUsingSidePanel(bool enable = true); + static void notMoving(bool enable = true); + static void newInventory(bool enable = true); + static void receiveLindens(bool enable = true); static void useSandbox(); -/* - static void useFlexible(); - static void useDebugMenus(); - static void useSculptedPrim(); - static void useMedia(); - protected: + static void firstUseNotification(const std::string& control_var, bool enable, const std::string& notification_name, LLSD args = LLSD(), LLSD payload = LLSD()); static std::set<std::string> sConfigVariables; -*/ + + static void init(); + static bool processNotification(const LLSD& notify); }; #endif diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 5ac006302e2efcb5288d66fc5789af9a7024a3e3..135137069c5a4735a5b39cf0dc1ca803e475352c 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -94,7 +94,6 @@ class LLFloaterAbout LLFloaterAbout::LLFloaterAbout(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_about.xml"); } diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp index 5cab770c42b3047b5517f806513db975b6c2c92c..252c7b51ae1aad6905edae0789255e1f200d6318 100644 --- a/indra/newview/llfloaterauction.cpp +++ b/indra/newview/llfloaterauction.cpp @@ -74,7 +74,6 @@ LLFloaterAuction::LLFloaterAuction(const LLSD& key) : LLFloater(key), mParcelID(-1) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_auction.xml"); mCommitCallbackRegistrar.add("ClickSnapshot", boost::bind(&LLFloaterAuction::onClickSnapshot, this)); mCommitCallbackRegistrar.add("ClickSellToAnyone", boost::bind(&LLFloaterAuction::onClickSellToAnyone, this)); mCommitCallbackRegistrar.add("ClickStartAuction", boost::bind(&LLFloaterAuction::onClickStartAuction, this)); diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp index 9391c761b72381ce727ca67a8e650637437a231c..9f96a22f560f58227b2ed536f555c8d7ea931ec6 100644 --- a/indra/newview/llfloateravatarpicker.cpp +++ b/indra/newview/llfloateravatarpicker.cpp @@ -79,7 +79,6 @@ LLFloaterAvatarPicker::LLFloaterAvatarPicker(const LLSD& key) mNearMeListComplete(FALSE), mCloseOnSelect(FALSE) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_avatar_picker.xml"); mCommitCallbackRegistrar.add("Refresh.FriendList", boost::bind(&LLFloaterAvatarPicker::populateFriend, this)); } diff --git a/indra/newview/llfloateravatartextures.cpp b/indra/newview/llfloateravatartextures.cpp index a6613968fb3192a5ab971e37b4e22c97cae418be..10cf26521feea134eea77f6ecb40fc934be0c26b 100644 --- a/indra/newview/llfloateravatartextures.cpp +++ b/indra/newview/llfloateravatartextures.cpp @@ -40,7 +40,6 @@ LLFloaterAvatarTextures::LLFloaterAvatarTextures(const LLSD& id) : LLFloater(id), mID(id.asUUID()) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_avatar_textures.xml"); } LLFloaterAvatarTextures::~LLFloaterAvatarTextures() diff --git a/indra/newview/llfloaterbeacons.cpp b/indra/newview/llfloaterbeacons.cpp index 0b8605d041feb3affc7c03372bd6855f3fcd5830..e24df948c42857e0bb39bf749caca6f5bb2cd139 100644 --- a/indra/newview/llfloaterbeacons.cpp +++ b/indra/newview/llfloaterbeacons.cpp @@ -36,8 +36,6 @@ LLFloaterBeacons::LLFloaterBeacons(const LLSD& seed) : LLFloater(seed) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_beacons.xml"); - // Initialize pipeline states from saved settings. // OK to do at floater constructor time because beacons do not display unless the floater is open // therefore it is OK to not initialize the pipeline state before needed. diff --git a/indra/newview/llfloaterbuildoptions.cpp b/indra/newview/llfloaterbuildoptions.cpp index 7e939a537d201afcb720d4fe5d3469269a4a4b14..4b6fe4a1157847a528f402e482041074361b8f80 100644 --- a/indra/newview/llfloaterbuildoptions.cpp +++ b/indra/newview/llfloaterbuildoptions.cpp @@ -40,7 +40,6 @@ LLFloaterBuildOptions::LLFloaterBuildOptions(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_build_options.xml"); } LLFloaterBuildOptions::~LLFloaterBuildOptions() diff --git a/indra/newview/llfloaterbulkpermission.cpp b/indra/newview/llfloaterbulkpermission.cpp index 02c7a6da7e684ee1e14def052494c6da0d0ab327..90f40628a824c180a450f8a356570adbe9d1f08c 100644 --- a/indra/newview/llfloaterbulkpermission.cpp +++ b/indra/newview/llfloaterbulkpermission.cpp @@ -57,7 +57,6 @@ LLFloaterBulkPermission::LLFloaterBulkPermission(const LLSD& seed) mDone(FALSE) { mID.generate(); -// LLUICtrlFactory::getInstance()->buildFloater(this,"floater_bulk_perms.xml"); mCommitCallbackRegistrar.add("BulkPermission.Apply", boost::bind(&LLFloaterBulkPermission::onApplyBtn, this)); mCommitCallbackRegistrar.add("BulkPermission.Close", boost::bind(&LLFloaterBulkPermission::onCloseBtn, this)); mCommitCallbackRegistrar.add("BulkPermission.CheckAll", boost::bind(&LLFloaterBulkPermission::onCheckAll, this)); diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index af98453c3cdeffd922e9cabf5374b4d8f13c91e3..a02b67f08e755319e7caabbc3e2a85f2379e328a 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -45,7 +45,6 @@ LLFloaterBump::LLFloaterBump(const LLSD& key) : LLFloater(key) { if(gNoRender) return; - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_bumps.xml"); } diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp index 32add5773710c11503e20353ea7c0fe50e045cee..f46a2be0fa7dc634a5127c8ad19306e621ff0c47 100644 --- a/indra/newview/llfloaterbuy.cpp +++ b/indra/newview/llfloaterbuy.cpp @@ -51,7 +51,6 @@ LLFloaterBuy::LLFloaterBuy(const LLSD& key) : LLFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_buy_object.xml"); } BOOL LLFloaterBuy::postBuild() diff --git a/indra/newview/llfloaterbuycontents.cpp b/indra/newview/llfloaterbuycontents.cpp index 77fb5590dfac0635b071bd77bc149906eeabc72b..a7388d21a37d2277440f25b2f331b76d9984e24f 100644 --- a/indra/newview/llfloaterbuycontents.cpp +++ b/indra/newview/llfloaterbuycontents.cpp @@ -41,6 +41,7 @@ #include "llinventorydefines.h" #include "llinventoryfunctions.h" #include "llinventorymodel.h" // for gInventory +#include "llfirstuse.h" #include "llfloaterreg.h" #include "llfloaterinventory.h" // for LLInventoryIcon::getIcon #include "llnotificationsutil.h" @@ -54,7 +55,6 @@ LLFloaterBuyContents::LLFloaterBuyContents(const LLSD& key) : LLFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_buy_contents.xml"); } BOOL LLFloaterBuyContents::postBuild() @@ -284,6 +284,10 @@ void LLFloaterBuyContents::onClickBuy() // it doesn't match region info then sale is canceled. LLSelectMgr::getInstance()->sendBuy(gAgent.getID(), category_id, mSaleInfo); + // NOTE: do this here instead of on receipt of object, since contents are transfered + // via a generic BulkUpdateInventory message with no way of distinguishing it from + // other inventory operations + LLFirstUse::newInventory(); closeFloater(); } diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index a5c62495fe3aa1e412ff580a049cd7b66d45bc1e..e48e1ab64f914e06d21267c73516b6ad64399754 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -294,7 +294,6 @@ LLFloaterBuyLandUI::LLFloaterBuyLandUI(const LLSD& key) { LLViewerParcelMgr::getInstance()->addObserver(&mParcelSelectionObserver); -// LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_buy_land.xml"); } LLFloaterBuyLandUI::~LLFloaterBuyLandUI() diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index d4067452b08057247448766ac5fe598fc56e1404..ad24c6534a4951cb0170a93a6f203c5d477809fb 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -345,7 +345,7 @@ BOOL LLFloaterCamera::postBuild() setTitleVisible(TRUE); // restore title visibility after chrome applying mRotate = getChild<LLJoystickCameraRotate>(ORBIT); - mZoom = getChild<LLPanelCameraZoom>(ZOOM); + mZoom = findChild<LLPanelCameraZoom>(ZOOM); mTrack = getChild<LLJoystickCameraTrack>(PAN); assignButton2Mode(CAMERA_CTRL_MODE_MODES, "avatarview_btn"); diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp index 89e745f65116d6c614a2f6b488196dc69e6342a3..69f1774ff8bf7321581de9af0d32153d5ba0d67e 100644 --- a/indra/newview/llfloatercolorpicker.cpp +++ b/indra/newview/llfloatercolorpicker.cpp @@ -107,9 +107,8 @@ LLFloaterColorPicker::LLFloaterColorPicker (LLColorSwatchCtrl* swatch, BOOL show mCanApplyImmediately ( show_apply_immediate ), mContextConeOpacity ( 0.f ) { - // build the majority of the gui using the factory builder - LLUICtrlFactory::getInstance()->buildFloater ( this, "floater_color_picker.xml", NULL ); - + buildFromFile ( "floater_color_picker.xml"); + // create user interface for this picker createUI (); diff --git a/indra/newview/llfloaterdaycycle.cpp b/indra/newview/llfloaterdaycycle.cpp index aacb543267bebaa1bfe1fbd3227b62d0d20ec744..22816ee8025267173335cef4236107832c039eeb 100644 --- a/indra/newview/llfloaterdaycycle.cpp +++ b/indra/newview/llfloaterdaycycle.cpp @@ -59,7 +59,6 @@ const F32 LLFloaterDayCycle::sHoursPerDay = 24.0f; LLFloaterDayCycle::LLFloaterDayCycle(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_day_cycle_options.xml"); } BOOL LLFloaterDayCycle::postBuild() diff --git a/indra/newview/llfloaterenvsettings.cpp b/indra/newview/llfloaterenvsettings.cpp index 337d4934e15e02807c9bd4cd1ac30f7a4433504c..fcaef1f34be8bc0603be9cbe4d0b573caa784214 100644 --- a/indra/newview/llfloaterenvsettings.cpp +++ b/indra/newview/llfloaterenvsettings.cpp @@ -50,7 +50,6 @@ LLFloaterEnvSettings::LLFloaterEnvSettings(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_env_settings.xml"); } // virtual LLFloaterEnvSettings::~LLFloaterEnvSettings() diff --git a/indra/newview/llfloatergodtools.cpp b/indra/newview/llfloatergodtools.cpp index f95112a8ab15f00eb383bd638fff44f6076b5a17..2dbe324586a0adc4203df1294dc02052b8f57d34 100644 --- a/indra/newview/llfloatergodtools.cpp +++ b/indra/newview/llfloatergodtools.cpp @@ -121,8 +121,6 @@ LLFloaterGodTools::LLFloaterGodTools(const LLSD& key) mFactoryMap["region"] = LLCallbackMap(createPanelRegion, this); mFactoryMap["objects"] = LLCallbackMap(createPanelObjects, this); mFactoryMap["request"] = LLCallbackMap(createPanelRequest, this); -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_god_tools.xml"); - } BOOL LLFloaterGodTools::postBuild() diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp index 3cd21545314481d26d4af793835bfb70a05c5b24..234a09d157d1656d0e536a210dcaeae64006f796 100644 --- a/indra/newview/llfloatergroups.cpp +++ b/indra/newview/llfloatergroups.cpp @@ -338,11 +338,10 @@ void LLPanelGroups::onGroupList(LLUICtrl* ctrl, void* userdata) if(self) self->enableButtons(); } -void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 powers_mask) +void init_group_list(LLScrollListCtrl* group_list, const LLUUID& highlight_id, U64 powers_mask) { S32 count = gAgent.mGroups.count(); LLUUID id; - LLCtrlListInterface *group_list = ctrl->getListInterface(); if (!group_list) return; group_list->operateOnAll(LLCtrlListInterface::OP_DELETE); @@ -366,10 +365,12 @@ void init_group_list(LLScrollListCtrl* ctrl, const LLUUID& highlight_id, U64 pow element["columns"][0]["font"]["name"] = "SANSSERIF"; element["columns"][0]["font"]["style"] = style; - group_list->addElement(element, ADD_SORTED); + group_list->addElement(element); } } + group_list->sortOnce(0, TRUE); + // add "none" to list at top { std::string style = "NORMAL"; diff --git a/indra/newview/llfloaterhardwaresettings.cpp b/indra/newview/llfloaterhardwaresettings.cpp index 2985626bd7701f89e8f02ff51802c875e20597ca..7bf158488fb75658035b20568a04241c82f45b95 100644 --- a/indra/newview/llfloaterhardwaresettings.cpp +++ b/indra/newview/llfloaterhardwaresettings.cpp @@ -56,7 +56,6 @@ LLFloaterHardwareSettings::LLFloaterHardwareSettings(const LLSD& key) mFogRatio(0.0), mProbeHardwareOnStartup(FALSE) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hardware_settings.xml"); } LLFloaterHardwareSettings::~LLFloaterHardwareSettings() @@ -102,7 +101,13 @@ void LLFloaterHardwareSettings::refreshEnabledState() getChildView("gamma")->setEnabled(!gPipeline.canUseWindLightShaders()); getChildView("(brightness, lower is brighter)")->setEnabled(!gPipeline.canUseWindLightShaders()); getChildView("fog")->setEnabled(!gPipeline.canUseWindLightShaders()); - + getChildView("fsaa")->setEnabled(gPipeline.canUseAntiAliasing()); + /* Enable to reset fsaa value to disabled when feature is not available. + if (!gPipeline.canUseAntiAliasing()) + { + getChild<LLUICtrl>("fsaa")->setValue((LLSD::Integer) 0); + } + */ } //============================================================================ diff --git a/indra/newview/llfloaterhud.cpp b/indra/newview/llfloaterhud.cpp index 8fc0598248fad11c1850d34613f94fcfb0944e2c..4181d1906e55a652d6d689fbf51a949a139f0622 100644 --- a/indra/newview/llfloaterhud.cpp +++ b/indra/newview/llfloaterhud.cpp @@ -54,8 +54,6 @@ LLFloaterHUD::LLFloaterHUD(const LLSD& key) return; } - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_hud.xml"); - // Don't grab the focus as it will impede performing in-world actions // while using the HUD setIsChrome(TRUE); diff --git a/indra/newview/llfloaterinspect.cpp b/indra/newview/llfloaterinspect.cpp index 8e7f7e083ce8249c62c7c8d12491792ed0e04e2f..691f1b206c0cdf1319c56c7e3be3bfa0d6efaf91 100644 --- a/indra/newview/llfloaterinspect.cpp +++ b/indra/newview/llfloaterinspect.cpp @@ -47,7 +47,6 @@ LLFloaterInspect::LLFloaterInspect(const LLSD& key) : LLFloater(key), mDirty(FALSE) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inspect.xml"); mCommitCallbackRegistrar.add("Inspect.OwnerProfile", boost::bind(&LLFloaterInspect::onClickOwnerProfile, this)); mCommitCallbackRegistrar.add("Inspect.CreatorProfile", boost::bind(&LLFloaterInspect::onClickCreatorProfile, this)); mCommitCallbackRegistrar.add("Inspect.SelectObject", boost::bind(&LLFloaterInspect::onSelectObject, this)); diff --git a/indra/newview/llfloaterinventory.cpp b/indra/newview/llfloaterinventory.cpp index 0891023a6dfdd88656d232dd2c4744a3952d76d6..df769bdd8852d8de09767559ea9aee7db4b0589c 100644 --- a/indra/newview/llfloaterinventory.cpp +++ b/indra/newview/llfloaterinventory.cpp @@ -54,7 +54,7 @@ LLFloaterInventory::~LLFloaterInventory() BOOL LLFloaterInventory::postBuild() { - mPanelMainInventory = getChild<LLPanelMainInventory>("Inventory Panel"); + mPanelMainInventory = findChild<LLPanelMainInventory>("Inventory Panel"); return TRUE; } diff --git a/indra/newview/llfloaterjoystick.cpp b/indra/newview/llfloaterjoystick.cpp index e1994bb8bc05b2de6dc94d5128d0672485089a02..c37798c330d5186d86950978566c027831c43f41 100644 --- a/indra/newview/llfloaterjoystick.cpp +++ b/indra/newview/llfloaterjoystick.cpp @@ -44,8 +44,6 @@ LLFloaterJoystick::LLFloaterJoystick(const LLSD& data) : LLFloater(data) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_joystick.xml"); - initFromSettings(); } diff --git a/indra/newview/llfloaterlagmeter.cpp b/indra/newview/llfloaterlagmeter.cpp index a92273521f954dce351d386af1a90e527d84317b..68b1770bb2c40a444d6df496d90ad0a799b7d6d2 100644 --- a/indra/newview/llfloaterlagmeter.cpp +++ b/indra/newview/llfloaterlagmeter.cpp @@ -47,7 +47,6 @@ const std::string LAG_GOOD_IMAGE_NAME = "lag_status_good.tga"; LLFloaterLagMeter::LLFloaterLagMeter(const LLSD& key) : LLFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_lagmeter.xml"); mCommitCallbackRegistrar.add("LagMeter.ClickShrink", boost::bind(&LLFloaterLagMeter::onClickShrink, this)); } diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 2f080ab334a9f039282e91f57a06ed7169231874..e124263db5b2a60e37b376faa1e781e8ed3d3298 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -248,8 +248,6 @@ LLFloaterLand::LLFloaterLand(const LLSD& seed) mFactoryMap["land_media_panel"] = LLCallbackMap(createPanelLandMedia, this); mFactoryMap["land_access_panel"] = LLCallbackMap(createPanelLandAccess, this); - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_about_land.xml", false); - sObserver = new LLParcelSelectionObserver(); LLViewerParcelMgr::getInstance()->addObserver( sObserver ); } @@ -567,7 +565,10 @@ void LLPanelLandGeneral::refresh() if (regionp) { insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY); - mLandType->setText(LLTrans::getString(regionp->getSimProductName())); + + std::string land_type; + bool is_land_type_localized = LLTrans::findString(land_type, regionp->getSimProductName()); + mLandType->setText(is_land_type_localized ? land_type : regionp->getSimProductName()); } // estate owner/manager cannot edit other parts of the parcel @@ -2434,7 +2435,7 @@ void LLPanelLandAccess::refresh() suffix.append(" " + parent_floater->getString("Remaining") + ")"); } if (mListAccess) - mListAccess->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); + mListAccess->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); } } @@ -2475,7 +2476,7 @@ void LLPanelLandAccess::refresh() } suffix.append(" " + parent_floater->getString("Remaining") + ")"); } - mListBanned->addNameItem(entry.mID, ADD_SORTED, TRUE, suffix); + mListBanned->addNameItem(entry.mID, ADD_DEFAULT, TRUE, suffix); } } diff --git a/indra/newview/llfloaterlandholdings.cpp b/indra/newview/llfloaterlandholdings.cpp index 31f20fbd29e8f3d3a63410791e7c6bf949da2dac..98e9b74278a9cd8f583af666618df2358c0aedae 100644 --- a/indra/newview/llfloaterlandholdings.cpp +++ b/indra/newview/llfloaterlandholdings.cpp @@ -60,7 +60,6 @@ LLFloaterLandHoldings::LLFloaterLandHoldings(const LLSD& key) mSortColumn(""), mSortAscending(TRUE) { -// LLUICtrlFactory::getInstance()->buildFloater(floater, "floater_land_holdings.xml"); } BOOL LLFloaterLandHoldings::postBuild() @@ -69,10 +68,9 @@ BOOL LLFloaterLandHoldings::postBuild() childSetAction("Show on Map", onClickMap, this); // Grant list - getChild<LLScrollListCtrl>("grant list")->setDoubleClickCallback(onGrantList, this); - - LLCtrlListInterface *list = childGetListInterface("grant list"); - if (!list) return TRUE; + LLScrollListCtrl* grant_list = getChild<LLScrollListCtrl>("grant list"); + grant_list->sortByColumnIndex(0, TRUE); + grant_list->setDoubleClickCallback(onGrantList, this); S32 count = gAgent.mGroups.count(); for(S32 i = 0; i < count; ++i) @@ -91,7 +89,7 @@ BOOL LLFloaterLandHoldings::postBuild() element["columns"][1]["value"] = areastr; element["columns"][1]["font"] = "SANSSERIF"; - list->addElement(element, ADD_SORTED); + grant_list->addElement(element); } center(); diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index c9d7eff02b95d124b5628c2b17b2b81b22d8178f..a1d291fea6a9e23f20816c0388e0f7783f78496d 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -72,7 +72,6 @@ LLFloaterMap::LLFloaterMap(const LLSD& key) mTextBoxSouthWest(NULL), mMap(NULL) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_map.xml", FALSE); } LLFloaterMap::~LLFloaterMap() @@ -96,7 +95,7 @@ BOOL LLFloaterMap::postBuild() mTextBoxNorthWest = getChild<LLTextBox> ("floater_map_northwest"); LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; - + registrar.add("Minimap.Zoom", boost::bind(&LLFloaterMap::handleZoom, this, _2)); registrar.add("Minimap.Tracker", boost::bind(&LLFloaterMap::handleStopTracking, this, _2)); @@ -125,7 +124,9 @@ BOOL LLFloaterMap::postBuild() BOOL LLFloaterMap::handleDoubleClick( S32 x, S32 y, MASK mask ) { - LLFloaterReg::showInstance("world_map"); + // If floater is minimized, minimap should be shown on doubleclick (STORM-299) + std::string floater_to_show = this->isMinimized() ? "mini_map" : "world_map"; + LLFloaterReg::showInstance(floater_to_show); return TRUE; } @@ -258,7 +259,7 @@ void LLFloaterMap::reshape(S32 width, S32 height, BOOL called_from_parent) void LLFloaterMap::handleZoom(const LLSD& userdata) { std::string level = userdata.asString(); - + F32 scale = 0.0f; if (level == std::string("close")) scale = LLNetMap::MAP_SCALE_MAX; diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp index 434d0681ab0508902cc04d9713a0dc5bc723c690..d20092e344f2de809092226080ca4b738a1bd09b 100644 --- a/indra/newview/llfloatermediabrowser.cpp +++ b/indra/newview/llfloatermediabrowser.cpp @@ -45,7 +45,11 @@ #include "llviewermedia.h" #include "llviewerparcelmedia.h" #include "llcombobox.h" +#include "llwindow.h" +#include "lllayoutstack.h" +#include "llcheckboxctrl.h" +#include "llnotifications.h" // TEMP #include "llsdutil.h" @@ -53,10 +57,124 @@ LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& key) : LLFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_media_browser.xml"); +} +//static +void LLFloaterMediaBrowser::create(const std::string &url, const std::string& target, const std::string& uuid) +{ + lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl; + + std::string tag = target; + + if(target.empty() || target == "_blank") + { + if(!uuid.empty()) + { + tag = uuid; + } + else + { + // create a unique tag for this instance + LLUUID id; + id.generate(); + tag = id.asString(); + } + } + + S32 browser_window_limit = gSavedSettings.getS32("MediaBrowserWindowLimit"); + + if(LLFloaterReg::findInstance("media_browser", tag) != NULL) + { + // There's already a media browser for this tag, so we won't be opening a new window. + } + else if(browser_window_limit != 0) + { + // showInstance will open a new window. Figure out how many media browsers are already open, + // and close the least recently opened one if this will put us over the limit. + + LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList("media_browser"); + lldebugs << "total instance count is " << instances.size() << llendl; + + for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++) + { + lldebugs << " " << (*iter)->getKey() << llendl; + } + + if(instances.size() >= (size_t)browser_window_limit) + { + // Destroy the least recently opened instance + (*instances.begin())->closeFloater(); + } + } + + LLFloaterMediaBrowser *browser = dynamic_cast<LLFloaterMediaBrowser*> (LLFloaterReg::showInstance("media_browser", tag)); + llassert(browser); + if(browser) + { + browser->mUUID = uuid; + + // tell the browser instance to load the specified URL + browser->openMedia(url, target); + LLViewerMedia::proxyWindowOpened(target, uuid); + } } +//static +void LLFloaterMediaBrowser::closeRequest(const std::string &uuid) +{ + LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser"); + lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl; + for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) + { + LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter); + lldebugs << " " << i->mUUID << llendl; + if (i && i->mUUID == uuid) + { + i->closeFloater(false); + return; + } + } +} + +//static +void LLFloaterMediaBrowser::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height) +{ + LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser"); + lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl; + for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) + { + LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter); + lldebugs << " " << i->mUUID << llendl; + if (i && i->mUUID == uuid) + { + i->geometryChanged(x, y, width, height); + return; + } +} +} + +void LLFloaterMediaBrowser::geometryChanged(S32 x, S32 y, S32 width, S32 height) +{ + // Make sure the layout of the browser control is updated, so this calculation is correct. + LLLayoutStack::updateClass(); + + // TODO: need to adjust size and constrain position to make sure floaters aren't moved outside the window view, etc. + LLCoordWindow window_size; + getWindow()->getSize(&window_size); + + // Adjust width and height for the size of the chrome on the Media Browser window. + width += getRect().getWidth() - mBrowser->getRect().getWidth(); + height += getRect().getHeight() - mBrowser->getRect().getHeight(); + + LLRect geom; + geom.setOriginAndSize(x, window_size.mY - (y + height), width, height); + + lldebugs << "geometry change: " << geom << llendl; + + handleReshape(geom,false); +} + + void LLFloaterMediaBrowser::draw() { getChildView("go")->setEnabled(!mAddressCombo->getValue().asString().empty()); @@ -99,6 +217,7 @@ BOOL LLFloaterMediaBrowser::postBuild() mAddressCombo = getChild<LLComboBox>("address"); mAddressCombo->setCommitCallback(onEnterAddress, this); + mAddressCombo->sortByName(); childSetAction("back", onClickBack, this); childSetAction("forward", onClickForward, this); @@ -114,6 +233,7 @@ BOOL LLFloaterMediaBrowser::postBuild() childSetAction("assign", onClickAssign, this); buildURLHistory(); + return TRUE; } @@ -154,6 +274,7 @@ std::string LLFloaterMediaBrowser::getSupportURL() //virtual void LLFloaterMediaBrowser::onClose(bool app_quitting) { + LLViewerMedia::proxyWindowClosed(mUUID); //setVisible(FALSE); destroy(); } @@ -170,7 +291,17 @@ void LLFloaterMediaBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEve getChildView("back")->setEnabled(self->getHistoryBackAvailable()); getChildView("forward")->setEnabled(self->getHistoryForwardAvailable()); } + else if(event == MEDIA_EVENT_CLOSE_REQUEST) + { + // The browser instance wants its window closed. + closeFloater(); + } + else if(event == MEDIA_EVENT_GEOMETRY_CHANGE) + { + geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); + } } + void LLFloaterMediaBrowser::setCurrentURL(const std::string& url) { mCurrentURL = url; @@ -179,7 +310,7 @@ void LLFloaterMediaBrowser::setCurrentURL(const std::string& url) if (mCurrentURL != "about:blank") { mAddressCombo->remove(mCurrentURL); - mAddressCombo->add(mCurrentURL, ADD_SORTED); + mAddressCombo->add(mCurrentURL); mAddressCombo->selectByValue(mCurrentURL); // Serialize url history @@ -191,12 +322,6 @@ void LLFloaterMediaBrowser::setCurrentURL(const std::string& url) getChildView("reload")->setEnabled(TRUE); } -void LLFloaterMediaBrowser::onOpen(const LLSD& media_url) -{ - LLFloater::onOpen(media_url); - openMedia(media_url.asString()); -} - //static void LLFloaterMediaBrowser::onEnterAddress(LLUICtrl* ctrl, void* user_data) { @@ -322,9 +447,12 @@ void LLFloaterMediaBrowser::onClickSeek(void* user_data) if(self->mBrowser->getMediaPlugin()) self->mBrowser->getMediaPlugin()->start(2.0f); } -void LLFloaterMediaBrowser::openMedia(const std::string& media_url) +void LLFloaterMediaBrowser::openMedia(const std::string& media_url, const std::string& target) { mBrowser->setHomePageUrl(media_url); + mBrowser->setTarget(target); mBrowser->navigateTo(media_url); setCurrentURL(media_url); } + + diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h index ffd8be4461bac47f0b9e33a7c654e11482c8f3ab..152d221a01849c09d4ebd7ea616e45d19a993119 100644 --- a/indra/newview/llfloatermediabrowser.h +++ b/indra/newview/llfloatermediabrowser.h @@ -33,23 +33,30 @@ class LLComboBox; class LLMediaCtrl; +class LLNotification; class LLFloaterMediaBrowser : public LLFloater, public LLViewerMediaObserver { public: + LOG_CLASS(LLFloaterMediaBrowser); LLFloaterMediaBrowser(const LLSD& key); + static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null); + + static void closeRequest(const std::string &uuid); + static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height); + void geometryChanged(S32 x, S32 y, S32 width, S32 height); + /*virtual*/ BOOL postBuild(); /*virtual*/ void onClose(bool app_quitting); /*virtual*/ void draw(); - /*virtual*/ void onOpen(const LLSD& key); // inherited from LLViewerMediaObserver /*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); - void openMedia(const std::string& media_url); + void openMedia(const std::string& media_url, const std::string& target); void buildURLHistory(); std::string getSupportURL(); void setCurrentURL(const std::string& url); @@ -71,6 +78,8 @@ class LLFloaterMediaBrowser : LLMediaCtrl* mBrowser; LLComboBox* mAddressCombo; std::string mCurrentURL; + boost::shared_ptr<LLNotification> mCurNotification; + std::string mUUID; }; #endif // LL_LLFLOATERMEDIABROWSER_H diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index 08475b1e55ebfa99ebafb0e57abd68ba2bfb4c11..42dc60f9e0b04694190fb0df022d3594eac63d64 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -37,10 +37,10 @@ const S32 NOTIFICATION_PANEL_HEADER_HEIGHT = 20; const S32 HEADER_PADDING = 38; -class LLNotificationChannelPanel : public LLPanel +class LLNotificationChannelPanel : public LLLayoutPanel { public: - LLNotificationChannelPanel(const std::string& channel_name); + LLNotificationChannelPanel(const Params& p); BOOL postBuild(); private: @@ -52,14 +52,14 @@ class LLNotificationChannelPanel : public LLPanel LLNotificationChannelPtr mChannelRejectsPtr; }; -LLNotificationChannelPanel::LLNotificationChannelPanel(const std::string& channel_name) - : LLPanel() +LLNotificationChannelPanel::LLNotificationChannelPanel(const LLNotificationChannelPanel::Params& p) +: LLLayoutPanel(p) { - mChannelPtr = LLNotifications::instance().getChannel(channel_name); + mChannelPtr = LLNotifications::instance().getChannel(p.name); mChannelRejectsPtr = LLNotificationChannelPtr( - LLNotificationChannel::buildChannel(channel_name + "rejects", mChannelPtr->getParentChannelName(), + LLNotificationChannel::buildChannel(p.name() + "rejects", mChannelPtr->getParentChannelName(), !boost::bind(mChannelPtr->getFilter(), _1))); - LLUICtrlFactory::instance().buildPanel(this, "panel_notifications_channel.xml"); + buildFromFile( "panel_notifications_channel.xml"); } BOOL LLNotificationChannelPanel::postBuild() @@ -167,8 +167,6 @@ LLFloaterNotificationConsole::LLFloaterNotificationConsole(const LLSD& key) : LLFloater(key) { mCommitCallbackRegistrar.add("ClickAdd", boost::bind(&LLFloaterNotificationConsole::onClickAdd, this)); - - //LLUICtrlFactory::instance().buildFloater(this, "floater_notifications_console.xml"); } BOOL LLFloaterNotificationConsole::postBuild() @@ -203,8 +201,13 @@ BOOL LLFloaterNotificationConsole::postBuild() void LLFloaterNotificationConsole::addChannel(const std::string& name, bool open) { LLLayoutStack& stack = getChildRef<LLLayoutStack>("notification_channels"); - LLNotificationChannelPanel* panelp = new LLNotificationChannelPanel(name); - stack.addPanel(panelp, 0, NOTIFICATION_PANEL_HEADER_HEIGHT, S32_MAX, S32_MAX, TRUE, TRUE, LLLayoutStack::ANIMATE); + LLNotificationChannelPanel::Params p; + p.min_dim = NOTIFICATION_PANEL_HEADER_HEIGHT; + p.auto_resize = true; + p.user_resize = true; + p.name = name; + LLNotificationChannelPanel* panelp = new LLNotificationChannelPanel(p); + stack.addPanel(panelp, LLLayoutStack::ANIMATE); LLButton& header_button = panelp->getChildRef<LLButton>("header"); header_button.setToggleState(!open); @@ -248,7 +251,7 @@ LLFloaterNotification::LLFloaterNotification(LLNotification* note) : LLFloater(LLSD()), mNote(note) { - LLUICtrlFactory::instance().buildFloater(this, "floater_notification.xml", NULL); + buildFromFile("floater_notification.xml"); } BOOL LLFloaterNotification::postBuild() diff --git a/indra/newview/llfloateropenobject.cpp b/indra/newview/llfloateropenobject.cpp index d6f6ba9e5b5b41fb02b89b9712b16e6978b92c5e..8b6619def2f1db6eb3bdc3e86975eb1fe34f398d 100644 --- a/indra/newview/llfloateropenobject.cpp +++ b/indra/newview/llfloateropenobject.cpp @@ -56,7 +56,6 @@ LLFloaterOpenObject::LLFloaterOpenObject(const LLSD& key) mPanelInventoryObject(NULL), mDirty(TRUE) { -// LLUICtrlFactory::getInstance()->buildFloater(this,"floater_openobject.xml"); mCommitCallbackRegistrar.add("OpenObject.MoveToInventory", boost::bind(&LLFloaterOpenObject::onClickMoveToInventory, this)); mCommitCallbackRegistrar.add("OpenObject.MoveAndWear", boost::bind(&LLFloaterOpenObject::onClickMoveAndWear, this)); } diff --git a/indra/newview/llfloaterperms.cpp b/indra/newview/llfloaterperms.cpp index 74dfede23ec4f803d03d40552ddc9c69cbdfd7c7..80b55c3cbbe6ac6d3780cc73ea203fd985126d07 100644 --- a/indra/newview/llfloaterperms.cpp +++ b/indra/newview/llfloaterperms.cpp @@ -37,7 +37,6 @@ LLFloaterPerms::LLFloaterPerms(const LLSD& seed) : LLFloater(seed) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_perm_prefs.xml"); mCommitCallbackRegistrar.add("Perms.Copy", boost::bind(&LLFloaterPerms::onCommitCopy, this)); mCommitCallbackRegistrar.add("Perms.OK", boost::bind(&LLFloaterPerms::onClickOK, this)); mCommitCallbackRegistrar.add("Perms.Cancel", boost::bind(&LLFloaterPerms::onClickCancel, this)); diff --git a/indra/newview/llfloaterpostcard.cpp b/indra/newview/llfloaterpostcard.cpp index bcdcd50288adf6c53c786aaa0ac032c6c39484a3..e8e9f769128a24a38d7c206a70e0d3f3becf9838 100644 --- a/indra/newview/llfloaterpostcard.cpp +++ b/indra/newview/llfloaterpostcard.cpp @@ -76,7 +76,6 @@ LLFloaterPostcard::LLFloaterPostcard(const LLSD& key) mViewerImage(NULL), mHasFirstMsgFocus(false) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_postcard.xml"); } // Destroys the object diff --git a/indra/newview/llfloaterpostprocess.cpp b/indra/newview/llfloaterpostprocess.cpp index 7f27caf68f69fe863836f08d6d21b963e880c355..2d61109e176e889f324c7acd8ec18d9e0759f797 100644 --- a/indra/newview/llfloaterpostprocess.cpp +++ b/indra/newview/llfloaterpostprocess.cpp @@ -42,7 +42,6 @@ LLFloaterPostProcess::LLFloaterPostProcess(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_post_process.xml"); } LLFloaterPostProcess::~LLFloaterPostProcess() diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index 3804a1b85840db0d9959b06eb1f4786ca830e5d3..41f85ae29d6fd5d585826bb58c5f07e5208777d5 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -49,7 +49,6 @@ #include "llfloaterreg.h" #include "llfloaterabout.h" #include "llfloaterhardwaresettings.h" -#include "llfloatervoicedevicesettings.h" #include "llimfloater.h" #include "llkeyboard.h" #include "llmodaldialog.h" @@ -57,7 +56,9 @@ #include "llnearbychat.h" #include "llnotifications.h" #include "llnotificationsutil.h" +#include "llnotificationtemplate.h" #include "llpanellogin.h" +#include "llpanelvoicedevicesettings.h" #include "llradiogroup.h" #include "llsearchcombobox.h" #include "llsky.h" @@ -131,7 +132,6 @@ LLVoiceSetKeyDialog::LLVoiceSetKeyDialog(const LLSD& key) : LLModalDialog(key), mParent(NULL) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_select_key.xml", NULL); } //virtual @@ -323,8 +323,9 @@ BOOL LLFloaterPreference::postBuild() if (!tabcontainer->selectTab(gSavedSettings.getS32("LastPrefTab"))) tabcontainer->selectFirstTab(); + getChild<LLUICtrl>("cache_location")->setEnabled(FALSE); // make it read-only but selectable (STORM-227) std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); - getChild<LLUICtrl>("cache_location")->setValue(cache_location); + setCacheLocation(cache_location); // if floater is opened before login set default localized busy message if (LLStartUp::getStartupState() < STATE_STARTED) @@ -407,12 +408,6 @@ void LLFloaterPreference::apply() hardware_settings->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"); @@ -420,7 +415,7 @@ void LLFloaterPreference::apply() fov_slider->setMaxValue(LLViewerCamera::getInstance()->getMaxView()); std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); - getChild<LLUICtrl>("cache_location")->setValue(cache_location); + setCacheLocation(cache_location); LLViewerMedia::setCookiesEnabled(getChild<LLUICtrl>("cookies_enabled")->getValue()); @@ -487,15 +482,6 @@ void LLFloaterPreference::cancel() // 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"); - } void LLFloaterPreference::onOpen(const LLSD& key) @@ -798,7 +784,7 @@ void LLFloaterPreference::buildPopupLists() LLScrollListItem* item = NULL; - bool show_popup = LLUI::sSettingGroups["ignores"]->getBOOL(templatep->mName); + bool show_popup = formp->getIgnored(); if (!show_popup) { if (ignore == LLNotificationForm::IGNORE_WITH_LAST_RESPONSE) @@ -820,13 +806,11 @@ void LLFloaterPreference::buildPopupLists() row["columns"][1]["font"] = "SANSSERIF_SMALL"; row["columns"][1]["width"] = 360; } - item = disabled_popups.addElement(row, - ADD_SORTED); + item = disabled_popups.addElement(row); } else { - item = enabled_popups.addElement(row, - ADD_SORTED); + item = enabled_popups.addElement(row); } if (item) @@ -1152,9 +1136,7 @@ void LLFloaterPreference::onClickDisablePopup() 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, FALSE); + templatep->mForm->setIgnored(false); } buildPopupLists(); @@ -1168,7 +1150,7 @@ void LLFloaterPreference::resetAllIgnored() { if (iter->second->mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) { - LLUI::sSettingGroups["ignores"]->setBOOL(iter->first, TRUE); + iter->second->mForm->setIgnored(true); } } } @@ -1181,7 +1163,7 @@ void LLFloaterPreference::setAllIgnored() { if (iter->second->mForm->getIgnoreType() != LLNotificationForm::IGNORE_NO) { - LLUI::sSettingGroups["ignores"]->setBOOL(iter->first, FALSE); + iter->second->mForm->setIgnored(false); } } } @@ -1329,6 +1311,12 @@ void LLFloaterPreference::getUIColor(LLUICtrl* ctrl, const LLSD& param) color_swatch->setOriginal(LLUIColorTable::instance().getColor(param.asString())); } +void LLFloaterPreference::setCacheLocation(const LLStringExplicit& location) +{ + LLUICtrl* cache_location_editor = getChild<LLUICtrl>("cache_location"); + cache_location_editor->setValue(location); + cache_location_editor->setToolTip(location); +} //---------------------------------------------------------------------------- static LLRegisterPanelClassWrapper<LLPanelPreference> t_places("panel_preference"); diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h index d1e15d5ab8621ee59eec6025cfcca9999b2871ed..e99731b92e41c0d3b0808283ac2e99ca7cd25f88 100644 --- a/indra/newview/llfloaterpreference.h +++ b/indra/newview/llfloaterpreference.h @@ -103,6 +103,8 @@ class LLFloaterPreference : public LLFloater public: + void setCacheLocation(const LLStringExplicit& location); + void onClickSetCache(); void onClickResetCache(); void onClickSkin(LLUICtrl* ctrl,const LLSD& userdata); diff --git a/indra/newview/llfloaterproperties.cpp b/indra/newview/llfloaterproperties.cpp index e4e4713dbca833d2e43103066acec9b3e5880580..dd12fa64d391f40c454800ff5f27d69e558adb41 100644 --- a/indra/newview/llfloaterproperties.cpp +++ b/indra/newview/llfloaterproperties.cpp @@ -108,8 +108,6 @@ LLFloaterProperties::LLFloaterProperties(const LLUUID& item_id) mDirty(TRUE) { mPropertiesObserver = new LLPropertiesObserver(this); - - //LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml"); } // Destroys the object diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 29ad0f3b9ca615ce685558fa141a337574311780..ed81fdec1607cfb26f0e52697ad13171bb07dd75 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -161,7 +161,6 @@ LLUUID LLFloaterRegionInfo::sRequestInvoice; LLFloaterRegionInfo::LLFloaterRegionInfo(const LLSD& seed) : LLFloater(seed) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_region_info.xml", FALSE); } BOOL LLFloaterRegionInfo::postBuild() @@ -174,32 +173,32 @@ BOOL LLFloaterRegionInfo::postBuild() mInfoPanels.push_back(panel); panel->getCommitCallbackRegistrar().add("RegionInfo.ManageTelehub", boost::bind(&LLPanelRegionInfo::onClickManageTelehub, panel)); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_general.xml"); + panel->buildFromFile("panel_region_general.xml"); mTab->addTabPanel(LLTabContainer::TabPanelParams().panel(panel).select_tab(true)); panel = new LLPanelRegionDebugInfo; mInfoPanels.push_back(panel); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_debug.xml"); + panel->buildFromFile("panel_region_debug.xml"); mTab->addTabPanel(panel); panel = new LLPanelRegionTextureInfo; mInfoPanels.push_back(panel); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_texture.xml"); + panel->buildFromFile("panel_region_texture.xml"); mTab->addTabPanel(panel); panel = new LLPanelRegionTerrainInfo; mInfoPanels.push_back(panel); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_terrain.xml"); + panel->buildFromFile("panel_region_terrain.xml"); mTab->addTabPanel(panel); panel = new LLPanelEstateInfo; mInfoPanels.push_back(panel); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_estate.xml"); + panel->buildFromFile("panel_region_estate.xml"); mTab->addTabPanel(panel); panel = new LLPanelEstateCovenant; mInfoPanels.push_back(panel); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_region_covenant.xml"); + panel->buildFromFile("panel_region_covenant.xml"); mTab->addTabPanel(panel); gMessageSystem->setHandlerFunc( diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 97f192a70830089b93d2bb25d20e8e642af51696..66d7e804ea5b62bca6f7d0cc66e55d01191d3d70 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -103,7 +103,6 @@ LLFloaterReporter::LLFloaterReporter(const LLSD& key) mCopyrightWarningSeen( FALSE ), mResourceDatap(new LLResourceData()) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_report_abuse.xml"); } // static diff --git a/indra/newview/llfloaterscriptdebug.cpp b/indra/newview/llfloaterscriptdebug.cpp index 118dea2c74871a0aa6cf5507d707685e4b726502..a0d1a32e1295659579bbd4ce48ea1f71879e41c9 100644 --- a/indra/newview/llfloaterscriptdebug.cpp +++ b/indra/newview/llfloaterscriptdebug.cpp @@ -52,8 +52,6 @@ LLFloaterScriptDebug::LLFloaterScriptDebug(const LLSD& key) : LLMultiFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_script_debug.xml"); - // avoid resizing of the window to match // the initial size of the tabbed-childs, whenever a tab is opened or closed mAutoResize = FALSE; @@ -141,8 +139,6 @@ LLFloaterScriptDebugOutput::LLFloaterScriptDebugOutput(const LLSD& object_id) : LLFloater(LLSD(object_id)), mObjectID(object_id.asUUID()) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_script_debug_panel.xml"); - // enabled autocous blocks controling focus via LLFloaterReg::showInstance setAutoFocus(FALSE); } diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp index 571f26e09ff68b4389c6cce6db6c2aa5cb65fa47..cd792c263c97120192c0491d3bbbdb3244617cf8 100644 --- a/indra/newview/llfloaterscriptlimits.cpp +++ b/indra/newview/llfloaterscriptlimits.cpp @@ -115,7 +115,7 @@ BOOL LLFloaterScriptLimits::postBuild() LLPanelScriptLimitsRegionMemory* panel_memory; panel_memory = new LLPanelScriptLimitsRegionMemory; mInfoPanels.push_back(panel_memory); - LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml"); + panel_memory->buildFromFile( "panel_script_limits_region_memory.xml"); mTab->addTabPanel(panel_memory); } @@ -124,7 +124,7 @@ BOOL LLFloaterScriptLimits::postBuild() { LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment; mInfoPanels.push_back(panel_attachments); - LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml"); + panel_attachments->buildFromFile("panel_script_limits_my_avatar.xml"); mTab->addTabPanel(panel_attachments); } @@ -706,38 +706,44 @@ void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content) } } - LLSD element; + LLScrollListItem::Params item_params; + item_params.value = task_id; - element["id"] = task_id; - element["columns"][0]["column"] = "size"; - element["columns"][0]["value"] = llformat("%d", size); - element["columns"][0]["font"] = "SANSSERIF"; - element["columns"][1]["column"] = "urls"; - element["columns"][1]["value"] = llformat("%d", urls); - element["columns"][1]["font"] = "SANSSERIF"; - element["columns"][2]["column"] = "name"; - element["columns"][2]["value"] = name_buf; - element["columns"][2]["font"] = "SANSSERIF"; - element["columns"][3]["column"] = "owner"; - element["columns"][3]["value"] = owner_buf; - element["columns"][3]["font"] = "SANSSERIF"; - element["columns"][4]["column"] = "parcel"; - element["columns"][4]["value"] = parcel_name; - element["columns"][4]["font"] = "SANSSERIF"; - element["columns"][5]["column"] = "location"; - if(has_locations) - { - element["columns"][5]["value"] = llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z); - } - else - { - element["columns"][5]["value"] = ""; - } - element["columns"][5]["font"] = "SANSSERIF"; + LLScrollListCell::Params cell_params; + cell_params.font = LLFontGL::getFontSansSerif(); + + cell_params.column = "size"; + cell_params.value = size; + item_params.columns.add(cell_params); + + cell_params.column = "urls"; + cell_params.value = urls; + item_params.columns.add(cell_params); + + cell_params.column = "name"; + cell_params.value = name_buf; + item_params.columns.add(cell_params); - list->addElement(element, ADD_SORTED); + cell_params.column = "owner"; + cell_params.value = owner_buf; + item_params.columns.add(cell_params); + + cell_params.column = "parcel"; + cell_params.value = parcel_name; + item_params.columns.add(cell_params); + + cell_params.column = "location"; + cell_params.value = has_locations + ? llformat("<%0.1f,%0.1f,%0.1f>", location_x, location_y, location_z) + : ""; + item_params.columns.add(cell_params); + + list->addRow(item_params); + LLSD element; element["owner_id"] = owner_id; + + element["id"] = task_id; element["local_id"] = local_id; mObjectListItems.push_back(element); } diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 7661e50eba72eaba6dee518b40fed11937e5704a..3ed4aec89ab10cfc5e1d9f1bdf6f1c279e6c31cd 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -96,11 +96,7 @@ LLFloaterSearch::LLFloaterSearch(const LLSD& key) : BOOL LLFloaterSearch::postBuild() { mBrowser = getChild<LLMediaCtrl>("browser"); - if (mBrowser) - { - mBrowser->addObserver(this); - mBrowser->setTrusted(true); - } + mBrowser->addObserver(this); return TRUE; } diff --git a/indra/newview/llfloatersettingsdebug.cpp b/indra/newview/llfloatersettingsdebug.cpp index 41a05055feff21da841317f9af9c4da87448ce61..71882fbb839b91e2f250b4af29d29d19835e6a4d 100644 --- a/indra/newview/llfloatersettingsdebug.cpp +++ b/indra/newview/llfloatersettingsdebug.cpp @@ -39,7 +39,6 @@ LLFloaterSettingsDebug::LLFloaterSettingsDebug(const LLSD& key) : LLFloater(key) { - //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)); diff --git a/indra/newview/llfloatersnapshot.cpp b/indra/newview/llfloatersnapshot.cpp index 278fee799adcd272008a99681e10aa41ec7a2ac3..36e8ad9dfcf964b6c9276a26e90c154c40945c26 100644 --- a/indra/newview/llfloatersnapshot.cpp +++ b/indra/newview/llfloatersnapshot.cpp @@ -2071,7 +2071,6 @@ LLFloaterSnapshot::LLFloaterSnapshot(const LLSD& key) : LLFloater(key), impl (*(new Impl)) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_snapshot.xml", FALSE); } // Destroys the object diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp index d945f1a2de21ba8c754340fd188c86961e86d163..b845fd132d8914e4841d9779760151990f3ff0c1 100644 --- a/indra/newview/llfloatertelehub.cpp +++ b/indra/newview/llfloatertelehub.cpp @@ -51,7 +51,6 @@ LLFloaterTelehub::LLFloaterTelehub(const LLSD& key) mTelehubRot(), mNumSpawn(0) { - //LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_telehub.xml"); } BOOL LLFloaterTelehub::postBuild() diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 58a0d08c7d91ca28cab4b7008d905facbed047fd..370bf05bf791c6a55a5f24d63a17a25cee2d1a67 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -350,7 +350,6 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mFactoryMap["Contents"] = LLCallbackMap(createPanelContents, this);//LLPanelContents mFactoryMap["land info panel"] = LLCallbackMap(createPanelLandInfo, this);//LLPanelLandInfo - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_tools.xml",FALSE); mCommitCallbackRegistrar.add("BuildTool.setTool", boost::bind(&LLFloaterTools::setTool,this, _2)); mCommitCallbackRegistrar.add("BuildTool.commitZoom", boost::bind(&commit_slider_zoom, _1)); mCommitCallbackRegistrar.add("BuildTool.commitRadioFocus", boost::bind(&commit_radio_group_focus, _1)); diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp index a984dd1d51783bffb75df19ae6a8f1e0a1a40739..099b657c7cfdf1a48608ecb1a6442173a9589a19 100644 --- a/indra/newview/llfloatertopobjects.cpp +++ b/indra/newview/llfloatertopobjects.cpp @@ -64,7 +64,6 @@ void LLFloaterTopObjects::show() } sInstance = new LLFloaterTopObjects(); -// LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_top_objects.xml"); sInstance->center(); } */ diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index 333e44e077dffac4a6dbdb870a3fd3bd7995f46d..5dc8067648e6706e958dfded454d12a35fb49d85 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -394,7 +394,6 @@ LLFloaterUIPreview::LLFloaterUIPreview(const LLSD& key) mLastDisplayedX(0), mLastDisplayedY(0) { - // called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_ui_preview.xml"); } // Destructor @@ -832,7 +831,7 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) if (save) { LLXMLNodePtr floater_write = new LLXMLNode(); - LLUICtrlFactory::getInstance()->buildFloater(*floaterp, path, floater_write); // just build it + (*floaterp)->buildFromFile(path, floater_write); // just build it if (!floater_write->isNull()) { @@ -846,7 +845,7 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) } else { - LLUICtrlFactory::getInstance()->buildFloater(*floaterp, path, NULL); // just build it + (*floaterp)->buildFromFile(path); // just build it (*floaterp)->openFloater((*floaterp)->getKey()); (*floaterp)->setCanResize((*floaterp)->isResizable()); } @@ -885,7 +884,7 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) if (save) { LLXMLNodePtr panel_write = new LLXMLNode(); - LLUICtrlFactory::getInstance()->buildPanel(panel, path, panel_write); // build it + panel->buildFromFile(path, panel_write); // build it if (!panel_write->isNull()) { @@ -899,7 +898,7 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) } else { - LLUICtrlFactory::getInstance()->buildPanel(panel, path); // build it + panel->buildFromFile(path); // build it 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 diff --git a/indra/newview/llfloaterurlentry.cpp b/indra/newview/llfloaterurlentry.cpp index 40f6d0728631d444ec251e949f3cd7a2c1221b2f..151cd2a1cd65f6e9cc37014520032378500ac8b1 100644 --- a/indra/newview/llfloaterurlentry.cpp +++ b/indra/newview/llfloaterurlentry.cpp @@ -82,7 +82,7 @@ LLFloaterURLEntry::LLFloaterURLEntry(LLHandle<LLPanel> parent) : LLFloater(LLSD()), mPanelLandMediaHandle(parent) { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_url_entry.xml", NULL); + buildFromFile("floater_url_entry.xml"); } //----------------------------------------------------------------------------- diff --git a/indra/newview/llfloaterwater.cpp b/indra/newview/llfloaterwater.cpp index 9c3f943013a0b4d88bbeb25f22ae1da1eb062d1e..be4b144f41a7f6374462f584a01c1f02ad13d0d0 100644 --- a/indra/newview/llfloaterwater.cpp +++ b/indra/newview/llfloaterwater.cpp @@ -63,7 +63,6 @@ std::set<std::string> LLFloaterWater::sDefaultPresets; LLFloaterWater::LLFloaterWater(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_water.xml"); } LLFloaterWater::~LLFloaterWater() diff --git a/indra/newview/llfloaterwhitelistentry.cpp b/indra/newview/llfloaterwhitelistentry.cpp index 7c618e788f230d7de3d54b46e072c24581ea59e4..2a499f681bcb8563ec9a6e33c95715236dceda80 100644 --- a/indra/newview/llfloaterwhitelistentry.cpp +++ b/indra/newview/llfloaterwhitelistentry.cpp @@ -41,7 +41,6 @@ LLFloaterWhiteListEntry::LLFloaterWhiteListEntry( const LLSD& key ) : LLFloater(key) { -// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_whitelist_entry.xml"); } /////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llfloaterwindlight.cpp b/indra/newview/llfloaterwindlight.cpp index 7131cb5de3b704ce36d6b8761798c9faa72fcd5b..ae98b2cf999e8747e1f4705caede6e0f7d4ecb7b 100644 --- a/indra/newview/llfloaterwindlight.cpp +++ b/indra/newview/llfloaterwindlight.cpp @@ -66,7 +66,6 @@ static const F32 WL_SUN_AMBIENT_SLIDER_SCALE = 3.0f; LLFloaterWindLight::LLFloaterWindLight(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_windlight_options.xml"); } LLFloaterWindLight::~LLFloaterWindLight() diff --git a/indra/newview/llfloaterwindowsize.cpp b/indra/newview/llfloaterwindowsize.cpp index 105efae03295cc081a7ad878e2372edbfa8437ba..a70f2af11a180c8bdeaf10ceaea6e356a0e6c272 100644 --- a/indra/newview/llfloaterwindowsize.cpp +++ b/indra/newview/llfloaterwindowsize.cpp @@ -80,7 +80,6 @@ class LLFloaterWindowSize LLFloaterWindowSize::LLFloaterWindowSize(const LLSD& key) : LLFloater(key) { - //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_window_size.xml"); } LLFloaterWindowSize::~LLFloaterWindowSize() diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index 3afa31b873c0ecea0c744f689b9d61a1e1a48f25..723689454266181e51eced97bfa1e9ec624fdf8a 100644 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -199,7 +199,6 @@ LLFloaterWorldMap::LLFloaterWorldMap(const LLSD& key) mFactoryMap["objects_mapview"] = LLCallbackMap(createWorldMapView, NULL); - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_world_map.xml", FALSE); mCommitCallbackRegistrar.add("WMap.Coordinates", boost::bind(&LLFloaterWorldMap::onCoordinatesCommit, this)); mCommitCallbackRegistrar.add("WMap.Location", boost::bind(&LLFloaterWorldMap::onLocationCommit, this)); mCommitCallbackRegistrar.add("WMap.AvatarCombo", boost::bind(&LLFloaterWorldMap::onAvatarComboCommit, this)); diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index 5d8e3f9ab9b58c2ddc1acc0284349f7c275f90e6..387e300b7427c51cac4b687494fad9f34158aaa4 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -350,6 +350,10 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder) { mFolders.insert(mFolders.begin(), folder); } + if (folder->numSelected()) + { + recursiveIncrementNumDescendantsSelected(folder->numSelected()); + } folder->setShowLoadStatus(true); folder->setOrigin(0, 0); folder->reshape(getRect().getWidth(), 0); @@ -692,29 +696,24 @@ BOOL LLFolderView::changeSelection(LLFolderViewItem* selection, BOOL selected) return rv; } -S32 LLFolderView::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) +void LLFolderView::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) { - S32 rv = 0; - // now store resulting selection if (mAllowMultiSelect) { LLFolderViewItem *cur_selection = getCurSelectedItem(); - rv = LLFolderViewFolder::extendSelection(selection, cur_selection, items); + LLFolderViewFolder::extendSelection(selection, cur_selection, items); for (S32 i = 0; i < items.count(); i++) { addToSelectionList(items[i]); - rv++; } } else { setSelection(selection, FALSE, FALSE); - rv++; } mSignalSelectCallback = SIGNAL_KEYBOARD_FOCUS; - return rv; } void LLFolderView::sanitizeSelection() @@ -1972,7 +1971,11 @@ void LLFolderView::scrollToShowSelection() { // If items are filtered while background fetch is in progress // scrollbar resets to the first filtered item. See EXT-3981. - if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && mSelectedItems.size()) + // However we allow scrolling for folder views with mAutoSelectOverride + // (used in Places SP) as an exception because the selection in them + // is not reset during items filtering. See STORM-133. + if ( (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() || mAutoSelectOverride) + && mSelectedItems.size() ) { mNeedsScroll = TRUE; } diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 980f9a34a6bb6e6ebf47795e25c040d4d651cffa..66ab4ce5ebccb85697602376fa0204b2e3aa9390 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -74,7 +74,6 @@ class LLFolderViewFunctor virtual void doItem(LLFolderViewItem* item) = 0; }; - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLFolderView // @@ -146,18 +145,18 @@ class LLFolderView : public LLFolderViewFolder, public 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(); - + 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); - virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); + virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); virtual std::set<LLUUID> getSelectionList() const; diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp index 04b690b9030610c333df4935bd4571e3b8e9e2e9..3c36248c1fd0d675d1a6ed32e88259db302d389d 100644 --- a/indra/newview/llfolderviewitem.cpp +++ b/indra/newview/llfolderviewitem.cpp @@ -489,27 +489,34 @@ void LLFolderViewItem::dirtyFilter() // together. BOOL LLFolderViewItem::setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus) { - if( selection == this ) + if (selection == this && !mIsSelected) { - mIsSelected = TRUE; - if(mListener) + selectItem(); + if (mListener) { mListener->selectItem(); } } - else + else if (mIsSelected) // Deselect everything else. { - mIsSelected = FALSE; + deselectItem(); } return mIsSelected; } BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selected) { - if(selection == this && mIsSelected != selected) + if (selection == this && mIsSelected != selected) { - mIsSelected = selected; - if(mListener) + if (mIsSelected) + { + deselectItem(); + } + else + { + selectItem(); + } + if (mListener) { mListener->selectItem(); } @@ -518,6 +525,33 @@ BOOL LLFolderViewItem::changeSelection(LLFolderViewItem* selection, BOOL selecte return FALSE; } +void LLFolderViewItem::deselectItem(void) +{ + llassert(mIsSelected); + + mIsSelected = FALSE; + + // Update ancestors' count of selected descendents. + LLFolderViewFolder* parent_folder = getParentFolder(); + if (parent_folder) + { + parent_folder->recursiveIncrementNumDescendantsSelected(-1); + } +} + +void LLFolderViewItem::selectItem(void) +{ + llassert(!mIsSelected); + + mIsSelected = TRUE; + + // Update ancestors' count of selected descendents. + LLFolderViewFolder* parent_folder = getParentFolder(); + if (parent_folder) + { + parent_folder->recursiveIncrementNumDescendantsSelected(1); + } +} BOOL LLFolderViewItem::isMovable() { @@ -1073,6 +1107,7 @@ void LLFolderViewItem::draw() LLFolderViewFolder::LLFolderViewFolder( const LLFolderViewItem::Params& p ): LLFolderViewItem( p ), // 0 = no create time + mNumDescendantsSelected(0), mIsOpen(FALSE), mExpanderHighlighted(FALSE), mCurHeight(0.f), @@ -1458,16 +1493,34 @@ BOOL LLFolderViewFolder::hasFilteredDescendants() return mMostFilteredDescendantGeneration >= getRoot()->getFilter()->getCurrentGeneration(); } +void LLFolderViewFolder::recursiveIncrementNumDescendantsSelected(S32 increment) +{ + LLFolderViewFolder* parent_folder = this; + do + { + parent_folder->mNumDescendantsSelected += increment; + + // Make sure we don't have negative values. + llassert(parent_folder->mNumDescendantsSelected >= 0); + + parent_folder = parent_folder->getParentFolder(); + } + while(parent_folder); +} + // Passes selection information on to children and record selection // information if necessary. BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem, - BOOL take_keyboard_focus) + BOOL take_keyboard_focus) { BOOL rv = FALSE; - if( selection == this ) + if (selection == this) { - mIsSelected = TRUE; - if(mListener) + if (!isSelected()) + { + selectItem(); + } + if (mListener) { mListener->selectItem(); } @@ -1475,7 +1528,10 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem } else { - mIsSelected = FALSE; + if (isSelected()) + { + deselectItem(); + } rv = FALSE; } BOOL child_selected = FALSE; @@ -1507,21 +1563,31 @@ BOOL LLFolderViewFolder::setSelection(LLFolderViewItem* selection, BOOL openitem return rv; } -// This method is used to change the selection of an item. If -// selection is 'this', then note selection as true. Returns TRUE -// if this or a child is now selected. -BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, - BOOL selected) +// This method is used to change the selection of an item. +// Recursively traverse all children; if 'selection' is 'this' then change +// the select status if necessary. +// Returns TRUE if the selection state of this folder, or of a child, was changed. +BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, BOOL selected) { BOOL rv = FALSE; if(selection == this) { - mIsSelected = selected; - if(mListener && selected) + if (isSelected() != selected) + { + rv = TRUE; + if (selected) + { + selectItem(); + } + else + { + deselectItem(); + } + } + if (mListener && selected) { mListener->selectItem(); } - rv = TRUE; } for (folders_t::iterator iter = mFolders.begin(); @@ -1545,16 +1611,14 @@ BOOL LLFolderViewFolder::changeSelection(LLFolderViewItem* selection, return rv; } -S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& selected_items) +void LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& selected_items) { - S32 num_selected = 0; - // pass on to child folders first for (folders_t::iterator iter = mFolders.begin(); iter != mFolders.end();) { folders_t::iterator fit = iter++; - num_selected += (*fit)->extendSelection(selection, last_selected, selected_items); + (*fit)->extendSelection(selection, last_selected, selected_items); } // handle selection of our immediate children... @@ -1647,7 +1711,6 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie if (item->changeSelection(item, TRUE)) { selected_items.put(item); - num_selected++; } } } @@ -1657,11 +1720,8 @@ S32 LLFolderViewFolder::extendSelection(LLFolderViewItem* selection, LLFolderVie if (selection->changeSelection(selection, TRUE)) { selected_items.put(selection); - num_selected++; } } - - return num_selected; } void LLFolderViewFolder::destroyView() @@ -1711,6 +1771,10 @@ void LLFolderViewFolder::removeView(LLFolderViewItem* item) return; } // deselect without traversing hierarchy + if (item->isSelected()) + { + item->deselectItem(); + } getRoot()->removeFromSelectionList(item); extractItem(item); delete item; @@ -1726,16 +1790,24 @@ void LLFolderViewFolder::extractItem( LLFolderViewItem* item ) // This is an evil downcast. However, it's only doing // pointer comparison to find if (which it should be ) the // item is in the container, so it's pretty safe. - LLFolderViewFolder* f = reinterpret_cast<LLFolderViewFolder*>(item); + LLFolderViewFolder* f = static_cast<LLFolderViewFolder*>(item); folders_t::iterator ft; ft = std::find(mFolders.begin(), mFolders.end(), f); - if(ft != mFolders.end()) + if (ft != mFolders.end()) { + if ((*ft)->numSelected()) + { + recursiveIncrementNumDescendantsSelected(-(*ft)->numSelected()); + } mFolders.erase(ft); } } else { + if ((*it)->isSelected()) + { + recursiveIncrementNumDescendantsSelected(-1); + } mItems.erase(it); } //item has been removed, need to update filter @@ -1899,6 +1971,10 @@ BOOL LLFolderViewFolder::isRemovable() BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item) { mItems.push_back(item); + if (item->isSelected()) + { + recursiveIncrementNumDescendantsSelected(1); + } item->setRect(LLRect(0, 0, getRect().getWidth(), 0)); item->setVisible(FALSE); addChild( item ); @@ -1912,6 +1988,10 @@ BOOL LLFolderViewFolder::addItem(LLFolderViewItem* item) BOOL LLFolderViewFolder::addFolder(LLFolderViewFolder* folder) { mFolders.push_back(folder); + if (folder->numSelected()) + { + recursiveIncrementNumDescendantsSelected(folder->numSelected()); + } folder->setOrigin(0, 0); folder->reshape(getRect().getWidth(), 0); folder->setVisible(FALSE); diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index 11b644e3aa01116d48ddd3b373c76262af2b6b50..ab9317afd9ebe30e203870336eb7ad901d20bfcf 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -108,7 +108,7 @@ class LLFolderViewItem : public LLView // layout constants static const S32 LEFT_PAD = 5; - // LEFT_INDENTATION is set via folder_indentation above + // LEFT_INDENTATION is set via folder_indentation above static const S32 ICON_PAD = 2; static const S32 ICON_WIDTH = 16; static const S32 TEXT_PAD = 1; @@ -121,6 +121,9 @@ class LLFolderViewItem : public LLView // Mostly for debugging printout purposes. const std::string& getSearchableLabel() { return mSearchableLabel; } +private: + BOOL mIsSelected; + protected: friend class LLUICtrlFactory; friend class LLFolderViewEventListener; @@ -134,7 +137,6 @@ class LLFolderViewItem : public LLView time_t mCreationDate; LLFolderViewFolder* mParentFolder; LLFolderViewEventListener* mListener; - BOOL mIsSelected; BOOL mIsCurSelection; BOOL mSelectPending; LLFontGL::StyleFlags mLabelStyle; @@ -212,19 +214,23 @@ class LLFolderViewItem : public LLView virtual void dirtyFilter(); - // If the selection is 'this' then note that otherwise - // ignore. Returns TRUE if this object was affected. If open is - // TRUE, then folders are opened up along the way to the - // selection. - virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, - BOOL take_keyboard_focus); + // If 'selection' is 'this' then note that otherwise ignore. + // Returns TRUE if this item ends up being selected. + virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus); - // This method is used to toggle the selection of an item. If - // selection is 'this', then note selection, and return TRUE. + // This method is used to set the selection state of an item. + // If 'selection' is 'this' then note selection. + // Returns TRUE if the selection state of this item was changed. virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); // this method is used to group select items - virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items){ return FALSE; } + virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items) { } + + // this method is used to deselect this element + void deselectItem(); + + // this method is used to select this element + void selectItem(); // gets multiple-element selection virtual std::set<LLUUID> getSelectionList() const; @@ -238,7 +244,7 @@ class LLFolderViewItem : public LLView // destroys this item recursively virtual void destroyView(); - BOOL isSelected() { return mIsSelected; } + BOOL isSelected() const { return mIsSelected; } void setUnselected() { mIsSelected = FALSE; } @@ -247,7 +253,7 @@ class LLFolderViewItem : public LLView BOOL getIsCurSelection() { return mIsCurSelection; } BOOL hasVisibleChildren() { return mHasVisibleChildren; } - + void setShowLoadStatus(bool status) { mShowLoadStatus = status; } // Call through to the viewed object and return true if it can be @@ -359,6 +365,13 @@ class LLFolderViewFolder : public LLFolderViewItem UNKNOWN, TRASH, NOT_TRASH } ETrash; +private: + S32 mNumDescendantsSelected; + +public: // Accessed needed by LLFolderViewItem + void recursiveIncrementNumDescendantsSelected(S32 increment); + S32 numSelected(void) const { return mNumDescendantsSelected + (isSelected() ? 1 : 0); } + protected: typedef std::list<LLFolderViewItem*> items_t; typedef std::list<LLFolderViewFolder*> folders_t; @@ -420,18 +433,19 @@ class LLFolderViewFolder : public LLFolderViewItem virtual void dirtyFilter(); // Passes selection information on to children and record - // selection information if necessary. Returns TRUE if this object - // (or a child) was affected. - virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, - BOOL take_keyboard_focus); - - // This method is used to change the selection of an item. If - // selection is 'this', then note selection as true. Returns TRUE - // if this or a child is now selected. + // selection information if necessary. + // Returns TRUE if this object (or a child) ends up being selected. + // If 'openitem' is TRUE then folders are opened up along the way to the selection. + virtual BOOL setSelection(LLFolderViewItem* selection, BOOL openitem, BOOL take_keyboard_focus); + + // This method is used to change the selection of an item. + // Recursively traverse all children; if 'selection' is 'this' then change + // the select status if necessary. + // Returns TRUE if the selection state of this folder, or of a child, was changed. virtual BOOL changeSelection(LLFolderViewItem* selection, BOOL selected); // this method is used to group select items - virtual S32 extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); + virtual void extendSelection(LLFolderViewItem* selection, LLFolderViewItem* last_selected, LLDynamicArray<LLFolderViewItem*>& items); // Returns true is this object and all of its children can be removed. virtual BOOL isRemovable(); @@ -521,6 +535,7 @@ class LLFolderViewFolder : public LLFolderViewItem time_t getCreationDate() const; bool isTrash() const; + S32 getNumSelectedDescendants(void) const { return mNumDescendantsSelected; } }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp index c42b39725239d49da2ef8dd1271fe96d63ea7236..5393678a6b04c11dce321c699e7a968f302d783c 100644 --- a/indra/newview/llgroupactions.cpp +++ b/indra/newview/llgroupactions.cpp @@ -235,7 +235,7 @@ static bool isGroupUIVisible() { static LLPanel* panel = 0; if(!panel) - panel = LLSideTray::getInstance()->findChild<LLPanel>("panel_group_info_sidetray"); + panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray"); if(!panel) return false; return panel->isInVisibleChain(); diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index 4f9d51ce58227f2ee9315172ffd8066ca4a12f57..c3e6e1c2dca29c0fd9ea096a3110148559bc9b41 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -283,7 +283,7 @@ mGroupNameBox(NULL), mInfoBtn(NULL), mGroupID(LLUUID::null) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_group_list_item.xml"); + buildFromFile( "panel_group_list_item.xml"); // Remember group icon width including its padding from the name text box, // so that we can hide and show the icon again later. diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d837ed8205903ae6982f26cc0c88a89f69ad45e4 --- /dev/null +++ b/indra/newview/llhints.cpp @@ -0,0 +1,381 @@ +/** + * @file llhints.cpp + * @brief Hint popups for displaying context sensitive help in a UI overlay + * + * $LicenseInfo:firstyear=2000&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" // must be first include + +#include "llhints.h" + +#include "llbutton.h" +#include "lltextbox.h" +#include "llviewerwindow.h" +#include "llviewercontrol.h" +#include "llsdparam.h" + +class LLHintPopup : public LLPanel +{ +public: + + typedef enum e_popup_direction + { + LEFT, + TOP, + RIGHT, + BOTTOM, + TOP_RIGHT + } EPopupDirection; + + struct PopupDirections : public LLInitParam::TypeValuesHelper<LLHintPopup::EPopupDirection, PopupDirections> + { + static void declareValues() + { + declare("left", LLHintPopup::LEFT); + declare("right", LLHintPopup::RIGHT); + declare("top", LLHintPopup::TOP); + declare("bottom", LLHintPopup::BOTTOM); + declare("top_right", LLHintPopup::TOP_RIGHT); + } + }; + + struct TargetParams : public LLInitParam::Block<TargetParams> + { + Mandatory<std::string> target; + Mandatory<EPopupDirection, PopupDirections> direction; + + TargetParams() + : target("target"), + direction("direction") + {} + }; + + struct Params : public LLInitParam::Block<Params, LLPanel::Params> + { + Mandatory<LLNotificationPtr> notification; + Optional<TargetParams> target_params; + Optional<S32> distance; + Optional<LLUIImage*> left_arrow, + up_arrow, + right_arrow, + down_arrow, + lower_left_arrow; + + Optional<S32> left_arrow_offset, + up_arrow_offset, + right_arrow_offset, + down_arrow_offset; + Optional<F32> fade_in_time, + fade_out_time; + + Params() + : distance("distance"), + left_arrow("left_arrow"), + up_arrow("up_arrow"), + right_arrow("right_arrow"), + down_arrow("down_arrow"), + lower_left_arrow("lower_left_arrow"), + left_arrow_offset("left_arrow_offset"), + up_arrow_offset("up_arrow_offset"), + right_arrow_offset("right_arrow_offset"), + down_arrow_offset("down_arrow_offset"), + fade_in_time("fade_in_time"), + fade_out_time("fade_out_time") + {} + }; + + LLHintPopup(const Params&); + + /*virtual*/ BOOL postBuild(); + + void onClickClose() { hide(); LLNotifications::instance().cancel(mNotification); } + void draw(); + void hide() { if(!mHidden) {mHidden = true; mFadeTimer.reset();} } + +private: + LLNotificationPtr mNotification; + std::string mTarget; + EPopupDirection mDirection; + S32 mDistance; + LLUIImagePtr mArrowLeft, + mArrowUp, + mArrowRight, + mArrowDown, + mArrowDownAndLeft; + S32 mArrowLeftOffset, + mArrowUpOffset, + mArrowRightOffset, + mArrowDownOffset; + LLFrameTimer mFadeTimer; + F32 mFadeInTime, + mFadeOutTime; + bool mHidden; +}; + +static LLDefaultChildRegistry::Register<LLHintPopup> r("hint_popup"); + + +LLHintPopup::LLHintPopup(const LLHintPopup::Params& p) +: mNotification(p.notification), + mDirection(TOP), + mDistance(p.distance), + mArrowLeft(p.left_arrow), + mArrowUp(p.up_arrow), + mArrowRight(p.right_arrow), + mArrowDown(p.down_arrow), + mArrowDownAndLeft(p.lower_left_arrow), + mArrowLeftOffset(p.left_arrow_offset), + mArrowUpOffset(p.up_arrow_offset), + mArrowRightOffset(p.right_arrow_offset), + mArrowDownOffset(p.down_arrow_offset), + mHidden(false), + mFadeInTime(p.fade_in_time), + mFadeOutTime(p.fade_out_time), + LLPanel(p) +{ + if (p.target_params.isProvided()) + { + mDirection = p.target_params.direction; + mTarget = p.target_params.target; + } + buildFromFile( "panel_hint.xml", NULL, p); +} + +BOOL LLHintPopup::postBuild() +{ + LLTextBox& hint_text = getChildRef<LLTextBox>("hint_text"); + hint_text.setText(mNotification->getMessage()); + + getChild<LLButton>("close")->setClickedCallback(boost::bind(&LLHintPopup::onClickClose, this)); + getChild<LLTextBox>("hint_title")->setText(mNotification->getLabel()); + + LLRect text_bounds = hint_text.getTextBoundingRect(); + S32 delta_height = text_bounds.getHeight() - hint_text.getRect().getHeight(); + reshape(getRect().getWidth(), getRect().getHeight() + delta_height); + return TRUE; +} + +void LLHintPopup::draw() +{ + F32 alpha = 1.f; + if (mHidden) + { + alpha = clamp_rescale(mFadeTimer.getElapsedTimeF32(), 0.f, mFadeOutTime, 1.f, 0.f); + if (alpha == 0.f) + { + die(); + return; + } + } + else + { + alpha = clamp_rescale(mFadeTimer.getElapsedTimeF32(), 0.f, mFadeInTime, 0.f, 1.f); + } + + { LLViewDrawContext context(alpha); + + if (mTarget.empty()) + { + // just draw contents, no arrow, in default position + LLPanel::draw(); + } + else + { + LLView* targetp = LLHints::getHintTarget(mTarget).get(); + if (!targetp) + { + // target widget is no longer valid, go away + die(); + } + else if (!targetp->isInVisibleChain()) + { + // if target is invisible, don't draw, but keep alive in case widget comes back + } + else + { + LLRect target_rect; + targetp->localRectToOtherView(targetp->getLocalRect(), &target_rect, getParent()); + + LLRect my_local_rect = getLocalRect(); + LLRect my_rect; + LLRect arrow_rect; + LLUIImagePtr arrow_imagep; + + switch(mDirection) + { + case LEFT: + my_rect.setCenterAndSize( target_rect.mLeft - (my_local_rect.getWidth() / 2 + mDistance), + target_rect.getCenterY(), + my_local_rect.getWidth(), + my_local_rect.getHeight()); + if (mArrowRight) + { + arrow_rect.setCenterAndSize(my_local_rect.mRight + mArrowRight->getWidth() / 2 + mArrowRightOffset, + my_local_rect.getCenterY(), + mArrowRight->getWidth(), + mArrowRight->getHeight()); + arrow_imagep = mArrowRight; + } + break; + case TOP: + my_rect.setCenterAndSize( target_rect.getCenterX(), + target_rect.mTop + (my_local_rect.getHeight() / 2 + mDistance), + my_local_rect.getWidth(), + my_local_rect.getHeight()); + if (mArrowDown) + { + arrow_rect.setCenterAndSize(my_local_rect.getCenterX(), + my_local_rect.mBottom - mArrowDown->getHeight() / 2 + mArrowDownOffset, + mArrowDown->getWidth(), + mArrowDown->getHeight()); + arrow_imagep = mArrowDown; + } + break; + case RIGHT: + my_rect.setCenterAndSize( target_rect.mRight + (my_local_rect.getWidth() / 2 + mDistance), + target_rect.getCenterY(), + my_local_rect.getWidth(), + my_local_rect.getHeight()); + if (mArrowLeft) + { + arrow_rect.setCenterAndSize(my_local_rect.mLeft - mArrowLeft->getWidth() / 2 + mArrowLeftOffset, + my_local_rect.getCenterY(), + mArrowLeft->getWidth(), + mArrowLeft->getHeight()); + arrow_imagep = mArrowLeft; + } + break; + case BOTTOM: + my_rect.setCenterAndSize( target_rect.getCenterX(), + target_rect.mBottom - (my_local_rect.getHeight() / 2 + mDistance), + my_local_rect.getWidth(), + my_local_rect.getHeight()); + if (mArrowUp) + { + arrow_rect.setCenterAndSize(my_local_rect.getCenterX(), + my_local_rect.mTop + mArrowUp->getHeight() / 2 + mArrowUpOffset, + mArrowUp->getWidth(), + mArrowUp->getHeight()); + arrow_imagep = mArrowUp; + } + break; + case TOP_RIGHT: + my_rect.setCenterAndSize( target_rect.mRight + (my_local_rect.getWidth() / 2), + target_rect.mTop + (my_local_rect.getHeight() / 2 + mDistance), + my_local_rect.getWidth(), + my_local_rect.getHeight()); + if (mArrowDownAndLeft) + { + arrow_rect.setCenterAndSize(my_local_rect.mLeft + mArrowDownAndLeft->getWidth() / 2 + mArrowLeftOffset, + my_local_rect.mBottom - mArrowDownAndLeft->getHeight() / 2 + mArrowDownOffset, + mArrowDownAndLeft->getWidth(), + mArrowDownAndLeft->getHeight()); + arrow_imagep = mArrowDownAndLeft; + } + } + setShape(my_rect); + LLPanel::draw(); + + if (arrow_imagep) arrow_imagep->draw(arrow_rect, LLColor4(1.f, 1.f, 1.f, alpha)); + } + } + } +} + + +LLRegistry<std::string, LLHandle<LLView> > LLHints::sTargetRegistry; +std::map<LLNotificationPtr, class LLHintPopup*> LLHints::sHints; + +//static +void LLHints::show(LLNotificationPtr hint) +{ + LLHintPopup::Params p(LLUICtrlFactory::getDefaultParams<LLHintPopup>()); + + LLParamSDParser parser; + parser.readSD(hint->getPayload(), p, true); + p.notification = hint; + + if (p.validateBlock()) + { + LLHintPopup* popup = new LLHintPopup(p); + + sHints[hint] = popup; + + LLView* hint_holder = gViewerWindow->getHintHolder(); + if (hint_holder) + { + hint_holder->addChild(popup); + popup->centerWithin(hint_holder->getLocalRect()); + } + } +} + +//static +void LLHints::hide(LLNotificationPtr hint) +{ + hint_map_t::iterator found_it = sHints.find(hint); + if (found_it != sHints.end()) + { + found_it->second->hide(); + sHints.erase(found_it); + } +} + +//static +void LLHints::registerHintTarget(const std::string& name, LLHandle<LLView> target) +{ + sTargetRegistry.defaultRegistrar().replace(name, target); +} + +//static +LLHandle<LLView> LLHints::getHintTarget(const std::string& name) +{ + LLHandle<LLView>* handlep = sTargetRegistry.getValue(name); + if (handlep) + { + return *handlep; + } + else + { + return LLHandle<LLView>(); + } +} + +//static +void LLHints::initClass() +{ + sRegister.reference(); + + LLControlVariablePtr control = gSavedSettings.getControl("EnableUIHints"); + control->getSignal()->connect(boost::bind(&showHints, _2)); + gViewerWindow->getHintHolder()->setVisible(control->getValue().asBoolean()); + +} + +//staic +void LLHints::showHints(const LLSD& show) +{ + bool visible = show.asBoolean(); + gViewerWindow->getHintHolder()->setVisible(visible); +} diff --git a/indra/newview/llhints.h b/indra/newview/llhints.h new file mode 100644 index 0000000000000000000000000000000000000000..ebffe561b9513d1d8fbe92c3640129d10d74e00b --- /dev/null +++ b/indra/newview/llhints.h @@ -0,0 +1,50 @@ +/** + * @file llhints.h + * @brief Hint popups for displaying context sensitive help in a UI overlay + * + * $LicenseInfo:firstyear=2000&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + +#ifndef LL_LLHINTS_H +#define LL_LLHINTS_H + +#include "llpanel.h" +#include "llnotifications.h" + + +class LLHints : public LLInitClass<LLHints> +{ +public: + static void show(LLNotificationPtr hint); + static void hide(LLNotificationPtr hint); + static void registerHintTarget(const std::string& name, LLHandle<LLView> target); + static LLHandle<LLView> getHintTarget(const std::string& name); + static void initClass(); +private: + static LLRegistry<std::string, LLHandle<LLView> > sTargetRegistry; + typedef std::map<LLNotificationPtr, class LLHintPopup*> hint_map_t; + static hint_map_t sHints; + static void showHints(const LLSD& show); +}; + + +#endif diff --git a/indra/newview/llhudview.cpp b/indra/newview/llhudview.cpp index 686bcfae1cf6b77e76d506e178831873464b9534..9a63e9935756b3e27873b134844df4b101e2df6b 100644 --- a/indra/newview/llhudview.cpp +++ b/indra/newview/llhudview.cpp @@ -50,7 +50,7 @@ const S32 HUD_ARROW_SIZE = 32; LLHUDView::LLHUDView(const LLRect& r) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_hud.xml"); + buildFromFile( "panel_hud.xml"); setShape(r, true); } diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 658e9403d874a85666980fe8c7d204e83f992910..56d3ed1c4d1aa9f787d923ad66ffbeada949742d 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -251,14 +251,14 @@ BOOL LLIMFloater::postBuild() } mControlPanel->setSessionId(mSessionID); - mControlPanel->setVisible(gSavedSettings.getBOOL("IMShowControlPanel")); + mControlPanel->getParent()->setVisible(gSavedSettings.getBOOL("IMShowControlPanel")); LLButton* slide_left = getChild<LLButton>("slide_left_btn"); - slide_left->setVisible(mControlPanel->getVisible()); + slide_left->setVisible(mControlPanel->getParent()->getVisible()); slide_left->setClickedCallback(boost::bind(&LLIMFloater::onSlide, this)); LLButton* slide_right = getChild<LLButton>("slide_right_btn"); - slide_right->setVisible(!mControlPanel->getVisible()); + slide_right->setVisible(!mControlPanel->getParent()->getVisible()); slide_right->setClickedCallback(boost::bind(&LLIMFloater::onSlide, this)); mInputEditor = getChild<LLLineEditor>("chat_editor"); @@ -357,12 +357,12 @@ void* LLIMFloater::createPanelAdHocControl(void* userdata) void LLIMFloater::onSlide() { - mControlPanel->setVisible(!mControlPanel->getVisible()); + mControlPanel->getParent()->setVisible(!mControlPanel->getParent()->getVisible()); - gSavedSettings.setBOOL("IMShowControlPanel", mControlPanel->getVisible()); + gSavedSettings.setBOOL("IMShowControlPanel", mControlPanel->getParent()->getVisible()); - getChild<LLButton>("slide_left_btn")->setVisible(mControlPanel->getVisible()); - getChild<LLButton>("slide_right_btn")->setVisible(!mControlPanel->getVisible()); + getChild<LLButton>("slide_left_btn")->setVisible(mControlPanel->getParent()->getVisible()); + getChild<LLButton>("slide_right_btn")->setVisible(!mControlPanel->getParent()->getVisible()); LLLayoutStack* stack = getChild<LLLayoutStack>("im_panels"); if (stack) stack->setAnimate(true); diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 5bbab1f092adf2d094c0613e96dac9143281963d..33cb3a54a7cf69b772e7b4b7e6a0d43f8424a30a 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -94,9 +94,9 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, if(gAgent.isInGroup(session_id, TRUE)) { - LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLGroupIconCtrl>(); + LLGroupIconCtrl::Params icon_params; icon_params.group_id = session_id; - icon = LLUICtrlFactory::instance().createWidget<LLGroupIconCtrl>(icon_params); + icon = LLUICtrlFactory::instance().create<LLGroupIconCtrl>(icon_params); mSessions[session_id] = floaterp; floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); @@ -105,9 +105,9 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, { LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id); - LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams<LLAvatarIconCtrl>(); + LLAvatarIconCtrl::Params icon_params; icon_params.avatar_id = avatar_id; - icon = LLUICtrlFactory::instance().createWidget<LLAvatarIconCtrl>(icon_params); + icon = LLUICtrlFactory::instance().create<LLAvatarIconCtrl>(icon_params); mSessions[session_id] = floaterp; floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); diff --git a/indra/newview/llimhandler.cpp b/indra/newview/llimhandler.cpp index bc76092a2014d39099a4e57c2250030d7508a3d5..cd71da73935742a5cce912dd279d4ee95e96613e 100644 --- a/indra/newview/llimhandler.cpp +++ b/indra/newview/llimhandler.cpp @@ -115,7 +115,7 @@ bool LLIMHandler::processNotification(const LLSD& notify) { mChannel->killToastByNotificationID(notification->getID()); } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index 129c9aec142de34d4d4392368a8aa9068b4d0a3b..01e1c3caa0ccb41a93a5e8c161f3844fda7e9f44 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -69,7 +69,6 @@ const static std::string IM_TEXT("message"); const static std::string IM_FROM("from"); const static std::string IM_FROM_ID("from_id"); -const static std::string NO_SESSION("(IM Session Doesn't Exist)"); const static std::string ADHOC_NAME_SUFFIX(" Conference"); const static std::string NEARBY_P2P_BY_OTHER("nearby_P2P_by_other"); @@ -231,25 +230,6 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& new LLSessionTimeoutTimer(mSessionID, SESSION_INITIALIZATION_TIMEOUT); } - // *WORKAROUND: for server hard-coded string in indra\newsim\llsimchatterbox.cpp - if (isAdHocSessionType() && IM_SESSION_INVITE == type) - { - // For an ad-hoc incoming chat name is received from the server and is in a form of "<Avatar's name> Conference" - // Lets update it to localize the "Conference" word. See EXT-8429. - S32 separator_index = mName.rfind(" "); - std::string name = mName.substr(0, separator_index); - ++separator_index; - std::string conference_word = mName.substr(separator_index, mName.length()); - - // additional check that session name is what we expected - if ("Conference" == conference_word) - { - LLStringUtil::format_map_t args; - args["[AGENT_NAME]"] = name; - LLTrans::findString(mName, "conference-title-incoming", args); - } - } - if (IM_NOTHING_SPECIAL == type) { mCallBackEnabled = LLVoiceClient::getInstance()->isSessionCallBackPossible(mSessionID); @@ -266,6 +246,27 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string& LLLogChat::loadAllHistory(mHistoryFileName, chat_history); addMessagesFromHistory(chat_history); } + + // Localizing name of ad-hoc session. STORM-153 + // Changing name should happen here- after the history file was created, so that + // history files have consistent (English) names in different locales. + if (isAdHocSessionType() && IM_SESSION_INVITE == type) + { + // Name here has a form of "<Avatar's name> Conference" + // Lets update it to localize the "Conference" word. See EXT-8429. + S32 separator_index = mName.rfind(" "); + std::string name = mName.substr(0, separator_index); + ++separator_index; + std::string conference_word = mName.substr(separator_index, mName.length()); + + // additional check that session name is what we expected + if ("Conference" == conference_word) + { + LLStringUtil::format_map_t args; + args["[AGENT_NAME]"] = name; + LLTrans::findString(mName, "conference-title-incoming", args); + } + } } void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction) @@ -494,6 +495,11 @@ LLIMModel::LLIMSession* LLIMModel::findAdHocIMSession(const uuid_vec_t& ids) return NULL; } +bool LLIMModel::LLIMSession::isOutgoingAdHoc() +{ + return IM_SESSION_CONFERENCE_START == mType; +} + bool LLIMModel::LLIMSession::isAdHoc() { return IM_SESSION_CONFERENCE_START == mType || (IM_SESSION_INVITE == mType && !gAgent.isInGroup(mSessionID)); @@ -621,7 +627,10 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co LLIMSession* session = new LLIMSession(session_id, name, type, other_participant_id, ids, voice); mId2SessionMap[session_id] = session; - LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, name, other_participant_id); + // When notifying observer, name of session is used instead of "name", because they may not be the + // same if it is an adhoc session (in this case name is localized in LLIMSession constructor). + std::string session_name = LLIMModel::getInstance()->getName(session_id); + LLIMMgr::getInstance()->notifyObserverSessionAdded(session_id, session_name, other_participant_id); return true; @@ -791,14 +800,14 @@ LLIMModel::LLIMSession* LLIMModel::addMessageSilently(const LLUUID& session_id, } -const std::string& LLIMModel::getName(const LLUUID& session_id) const +const std::string LLIMModel::getName(const LLUUID& session_id) const { LLIMSession* session = findIMSession(session_id); if (!session) { llwarns << "session " << session_id << "does not exist " << llendl; - return NO_SESSION; + return LLTrans::getString("no_session_message"); } return session->mName; @@ -1028,24 +1037,25 @@ void LLIMModel::sendMessage(const std::string& utf8_text, // to Recent People to prevent showing of an item with (???)(???). See EXT-8246. // Concrete participants will be added into this list once they sent message in chat. if (IM_SESSION_INVITE == dialog) return; - // Add only online members to recent (EXT-8658) - LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); - LLSpeakerMgr::speaker_list_t speaker_list; - if(speaker_mgr != NULL) - { - speaker_mgr->getSpeakerList(&speaker_list, true); - } - for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++) - { - const LLPointer<LLSpeaker>& speakerp = *it; - - LLRecentPeople::instance().add(speakerp->mID); - } + addSpeakersToRecent(im_session_id); } } +} - +void LLIMModel::addSpeakersToRecent(const LLUUID& im_session_id) +{ + LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(im_session_id); + LLSpeakerMgr::speaker_list_t speaker_list; + if(speaker_mgr != NULL) + { + speaker_mgr->getSpeakerList(&speaker_list, true); + } + for(LLSpeakerMgr::speaker_list_t::iterator it = speaker_list.begin(); it != speaker_list.end(); it++) + { + const LLPointer<LLSpeaker>& speakerp = *it; + LLRecentPeople::instance().add(speakerp->mID); + } } void session_starter_helper( diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index 4ce94773bf296b4d2158c9db1ec6cdcf000ff6d8..f7a4406f006fe051f47505a5e6115e85aafd853a 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -84,6 +84,7 @@ class LLIMModel : public LLSingleton<LLIMModel> /** @deprecated */ static void chatFromLogFile(LLLogChat::ELogLineType type, const LLSD& msg, void* userdata); + bool isOutgoingAdHoc(); bool isAdHoc(); bool isP2P(); bool isOtherParticipantAvaline(); @@ -230,7 +231,7 @@ class LLIMModel : public LLSingleton<LLIMModel> * For an incoming ad-hoc chat - is received from the server and is in a from of "<Avatar's name> Conference" * It is updated in LLIMModel::LLIMSession's constructor to localize the "Conference". */ - const std::string& getName(const LLUUID& session_id) const; + const std::string getName(const LLUUID& session_id) const; /** * Get number of unread messages in a session with session_id @@ -273,6 +274,9 @@ class LLIMModel : public LLSingleton<LLIMModel> static void sendMessage(const std::string& utf8_text, const LLUUID& im_session_id, const LLUUID& other_participant_id, EInstantMessage dialog); + // Adds people from speakers list (people with whom you are currently speaking) to the Recent People List + static void addSpeakersToRecent(const LLUUID& im_session_id); + void testMessages(); /** diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 02e7f0b9e2b65d3d47ba64b77a2b8d3b1b4200cf..569dfc08e2fe02b915f91437de35e16af52c1368 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2471,6 +2471,10 @@ void LLFolderBridge::folderOptionsMenu() { disabled_items.push_back(std::string("Remove From Outfit")); } + if (!LLAppearanceMgr::instance().getCanReplaceCOF(mUUID)) + { + disabled_items.push_back(std::string("Replace Outfit")); + } mItems.push_back(std::string("Outfit Separator")); } LLMenuGL* menup = dynamic_cast<LLMenuGL*>(mMenu.get()); @@ -2852,6 +2856,66 @@ bool move_task_inventory_callback(const LLSD& notification, const LLSD& response return false; } +// Returns true if the item can be moved to Current Outfit or any outfit folder. +static BOOL can_move_to_outfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit) +{ + if ((inv_item->getInventoryType() != LLInventoryType::IT_WEARABLE) && + (inv_item->getInventoryType() != LLInventoryType::IT_GESTURE) && + (inv_item->getInventoryType() != LLInventoryType::IT_OBJECT)) + { + return FALSE; + } + + if (move_is_into_current_outfit && get_is_item_worn(inv_item->getUUID())) + { + return FALSE; + } + + return TRUE; +} + +void LLFolderBridge::dropToFavorites(LLInventoryItem* inv_item) +{ + // use callback to rearrange favorite landmarks after adding + // to have new one placed before target (on which it was dropped). See EXT-4312. + LLPointer<AddFavoriteLandmarkCallback> cb = new AddFavoriteLandmarkCallback(); + LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get()); + LLFolderViewItem* drag_over_item = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL; + if (drag_over_item && drag_over_item->getListener()) + { + cb.get()->setTargetLandmarkId(drag_over_item->getListener()->getUUID()); + } + + copy_inventory_item( + gAgent.getID(), + inv_item->getPermissions().getOwner(), + inv_item->getUUID(), + mUUID, + std::string(), + cb); +} + +void LLFolderBridge::dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit) +{ + // BAP - should skip if dup. + if (move_is_into_current_outfit) + { + LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true); + } + else + { + LLPointer<LLInventoryCallback> cb = NULL; + link_inventory_item( + gAgent.getID(), + inv_item->getLinkedUUID(), + mUUID, + inv_item->getName(), + inv_item->getDescription(), + LLAssetType::AT_LINK, + cb); + } +} + // This is used both for testing whether an item can be dropped // into the folder, as well as performing the actual drop, depending // if drop == TRUE. @@ -2864,18 +2928,20 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, if(!isAgentInventory()) return FALSE; // cannot drag into library if (!isAgentAvatarValid()) return FALSE; + const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); + const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); + + const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); + const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); + LLToolDragAndDrop::ESource source = LLToolDragAndDrop::getInstance()->getSource(); BOOL accept = FALSE; LLViewerObject* object = NULL; if(LLToolDragAndDrop::SOURCE_AGENT == source) { const LLUUID &trash_id = model->findCategoryUUIDForType(LLFolderType::FT_TRASH, false); - const LLUUID ¤t_outfit_id = model->findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, false); - const LLUUID &favorites_id = model->findCategoryUUIDForType(LLFolderType::FT_FAVORITE, false); const BOOL move_is_into_trash = (mUUID == trash_id) || model->isObjectDescendentOf(mUUID, trash_id); - const BOOL move_is_into_current_outfit = (mUUID == current_outfit_id); - const BOOL move_is_into_outfit = (getCategory() && getCategory()->getPreferredType()==LLFolderType::FT_OUTFIT); const BOOL move_is_outof_current_outfit = LLAppearanceMgr::instance().getIsInCOF(inv_item->getUUID()); const BOOL folder_allows_reorder = (mUUID == favorites_id); @@ -2927,14 +2993,7 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, accept = FALSE; if (move_is_into_current_outfit || move_is_into_outfit) { - if ((inv_item->getInventoryType() != LLInventoryType::IT_WEARABLE) && - (inv_item->getInventoryType() != LLInventoryType::IT_GESTURE) && - (inv_item->getInventoryType() != LLInventoryType::IT_OBJECT)) - accept = FALSE; - } - if (move_is_into_current_outfit && get_is_item_worn(inv_item->getUUID())) - { - accept = FALSE; + accept = can_move_to_outfit(inv_item, move_is_into_current_outfit); } if(accept && drop) @@ -2978,50 +3037,13 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, // (copy the item) else if (favorites_id == mUUID) { - // use callback to rearrange favorite landmarks after adding - // to have new one placed before target (on which it was dropped). See EXT-4312. - LLPointer<AddFavoriteLandmarkCallback> cb = new AddFavoriteLandmarkCallback(); - LLInventoryPanel* panel = dynamic_cast<LLInventoryPanel*>(mInventoryPanel.get()); - LLFolderViewItem* drag_over_item = panel ? panel->getRootFolder()->getDraggingOverItem() : NULL; - if (drag_over_item && drag_over_item->getListener()) - { - cb.get()->setTargetLandmarkId(drag_over_item->getListener()->getUUID()); - } - - copy_inventory_item( - gAgent.getID(), - inv_item->getPermissions().getOwner(), - inv_item->getUUID(), - mUUID, - std::string(), - cb); + dropToFavorites(inv_item); } // CURRENT OUTFIT or OUTFIT folder // (link the item) else if (move_is_into_current_outfit || move_is_into_outfit) { - if ((inv_item->getInventoryType() == LLInventoryType::IT_WEARABLE) || - (inv_item->getInventoryType() == LLInventoryType::IT_GESTURE) || - (inv_item->getInventoryType() == LLInventoryType::IT_OBJECT)) - { - // BAP - should skip if dup. - if (move_is_into_current_outfit) - { - LLAppearanceMgr::instance().wearItemOnAvatar(inv_item->getUUID(), true, true); - } - else - { - LLPointer<LLInventoryCallback> cb = NULL; - link_inventory_item( - gAgent.getID(), - inv_item->getLinkedUUID(), - mUUID, - inv_item->getName(), - inv_item->getDescription(), - LLAssetType::AT_LINK, - cb); - } - } + dropToOutfit(inv_item, move_is_into_current_outfit); } // NORMAL or TRASH folder // (move the item, restamp if into trash) @@ -3070,6 +3092,15 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, is_move = TRUE; accept = TRUE; } + + // Don't allow placing an original item into Current Outfit or an outfit folder + // because they must contain only links to wearable items. + // *TODO: Probably we should create a link to an item if it was dragged to outfit or COF. + if(move_is_into_current_outfit || move_is_into_outfit) + { + accept = FALSE; + } + if(drop && accept) { LLMoveInv* move_inv = new LLMoveInv; @@ -3109,15 +3140,36 @@ BOOL LLFolderBridge::dragItemIntoFolder(LLInventoryItem* inv_item, if(item && item->isFinished()) { accept = TRUE; - if(drop) + + if (move_is_into_current_outfit || move_is_into_outfit) { - copy_inventory_item( - gAgent.getID(), - inv_item->getPermissions().getOwner(), - inv_item->getUUID(), - mUUID, - std::string(), - LLPointer<LLInventoryCallback>(NULL)); + accept = can_move_to_outfit(inv_item, move_is_into_current_outfit); + } + + if (accept && drop) + { + // FAVORITES folder + // (copy the item) + if (favorites_id == mUUID) + { + dropToFavorites(inv_item); + } + // CURRENT OUTFIT or OUTFIT folder + // (link the item) + else if (move_is_into_current_outfit || move_is_into_outfit) + { + dropToOutfit(inv_item, move_is_into_current_outfit); + } + else + { + copy_inventory_item( + gAgent.getID(), + inv_item->getPermissions().getOwner(), + inv_item->getUUID(), + mUUID, + std::string(), + LLPointer<LLInventoryCallback>(NULL)); + } } } } diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index 14abdd76b9e8970baec559f475f1589ed68e7b88..5ac328dcef2e1d0c303e6b15ba22b3205ed0df16 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -295,6 +295,8 @@ class LLFolderBridge : public LLInvFVBridge menuentry_vec_t getMenuItems() { return mItems; } // returns a copy of current menu items + void dropToFavorites(LLInventoryItem* inv_item); + void dropToOutfit(LLInventoryItem* inv_item, BOOL move_is_into_current_outfit); //-------------------------------------------------------------------- // Messy hacks for handling folder options diff --git a/indra/newview/llinventorylistitem.cpp b/indra/newview/llinventorylistitem.cpp index 1ea91103f15a232ee408561951dfbb60a25a9390..225d0288a978e66df627ba12e83b3eaf7d46f76d 100644 --- a/indra/newview/llinventorylistitem.cpp +++ b/indra/newview/llinventorylistitem.cpp @@ -302,7 +302,9 @@ LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem } else { - mIconCtrl = dynamic_cast<LLIconCtrl*>(LLUICtrlFactory::createDefaultWidget<LLIconCtrl>("item_icon")); + LLIconCtrl::Params icon_params; + icon_params.name = "item_icon"; + mIconCtrl = LLUICtrlFactory::create<LLIconCtrl>(icon_params); } LLTextBox::Params text_params(params.item_name); @@ -315,7 +317,9 @@ LLPanelInventoryListItemBase::LLPanelInventoryListItemBase(LLViewerInventoryItem } else { - mTitleCtrl = dynamic_cast<LLTextBox*>(LLUICtrlFactory::createDefaultWidget<LLTextBox>("item_title")); + LLTextBox::Params text_aprams; + text_params.name = "item_title"; + mTitleCtrl = LLUICtrlFactory::create<LLTextBox>(text_params); } } diff --git a/indra/newview/lllogininstance.cpp b/indra/newview/lllogininstance.cpp index 7b2f5984a778899df811cdc064c61efb71b47ecd..3def135fb411ffb142ac437f4818f3b2ced68b7a 100644 --- a/indra/newview/lllogininstance.cpp +++ b/indra/newview/lllogininstance.cpp @@ -47,6 +47,7 @@ #include "llfloaterreg.h" #include "llnotifications.h" #include "llwindow.h" +#include "llviewerwindow.h" #if LL_LINUX || LL_SOLARIS #include "lltrans.h" #endif @@ -102,6 +103,7 @@ void LLLoginInstance::reconnect() std::vector<std::string> uris; LLGridManager::getInstance()->getLoginURIs(uris); mLoginModule->connect(uris.front(), mRequestData); + gViewerWindow->setShowProgress(true); } void LLLoginInstance::disconnect() @@ -239,6 +241,7 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event) LLSD data(LLSD::emptyMap()); data["message"] = message_response; data["reply_pump"] = TOS_REPLY_PUMP; + gViewerWindow->setShowProgress(FALSE); LLFloaterReg::showInstance("message_tos", data); LLEventPumps::instance().obtain(TOS_REPLY_PUMP) .listen(TOS_LISTENER_NAME, @@ -259,6 +262,7 @@ void LLLoginInstance::handleLoginFailure(const LLSD& event) data["certificate"] = response["certificate"]; } + gViewerWindow->setShowProgress(FALSE); LLFloaterReg::showInstance("message_critical", data); LLEventPumps::instance().obtain(TOS_REPLY_PUMP) .listen(TOS_LISTENER_NAME, @@ -402,6 +406,8 @@ void LLLoginInstance::updateApp(bool mandatory, const std::string& auth_msg) { mNotifications->add(notification_name, args, payload, boost::bind(&LLLoginInstance::updateDialogCallback, this, _1, _2)); + + gViewerWindow->setShowProgress(false); } } diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index a6ff76cf844da0f114c7d022854a69cd867afd23..e84c9152b107144166cc386ca576c9a7e21b2c57 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -38,7 +38,6 @@ #include "llviewermedia.h" #include "llviewertexture.h" #include "llviewerwindow.h" -#include "llnotificationsutil.h" #include "llweb.h" #include "llrender.h" #include "llpluginclassmedia.h" @@ -48,6 +47,13 @@ // linden library includes #include "llfocusmgr.h" +#include "llsdutil.h" +#include "lllayoutstack.h" +#include "lliconctrl.h" +#include "lltextbox.h" +#include "llbutton.h" +#include "llcheckboxctrl.h" +#include "llnotifications.h" extern BOOL gRestoreGL; @@ -62,19 +68,21 @@ LLMediaCtrl::Params::Params() texture_width("texture_width", 1024), texture_height("texture_height", 1024), caret_color("caret_color"), - initial_mime_type("initial_mime_type") + initial_mime_type("initial_mime_type"), + media_id("media_id"), + trusted_content("trusted_content", false) { tab_stop(false); } LLMediaCtrl::LLMediaCtrl( const Params& p) : LLPanel( p ), + LLInstanceTracker<LLMediaCtrl, LLUUID>(LLUUID::generateNewID()), mTextureDepthBytes( 4 ), mBorder(NULL), mFrequentUpdates( true ), mForceUpdate( false ), mHomePageUrl( "" ), - mTrusted(false), mIgnoreUIScale( true ), mAlwaysRefresh( false ), mMediaSource( 0 ), @@ -88,7 +96,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) : mTextureWidth ( 1024 ), mTextureHeight ( 1024 ), mClearCache(false), - mHomePageMimeType(p.initial_mime_type) + mHomePageMimeType(p.initial_mime_type), + mTrusted(p.trusted_content) { { LLColor4 color = p.caret_color().get(); @@ -160,20 +169,11 @@ void LLMediaCtrl::setTakeFocusOnClick( bool take_focus ) mTakeFocusOnClick = take_focus; } -//////////////////////////////////////////////////////////////////////////////// -void LLMediaCtrl::setTrusted( bool valIn ) -{ - if(mMediaSource) - { - mMediaSource->setTrustedBrowser(valIn); - } - mTrusted = valIn; -} - //////////////////////////////////////////////////////////////////////////////// // BOOL LLMediaCtrl::handleHover( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleHover(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -189,6 +189,7 @@ BOOL LLMediaCtrl::handleHover( S32 x, S32 y, MASK mask ) // BOOL LLMediaCtrl::handleScrollWheel( S32 x, S32 y, S32 clicks ) { + if (LLPanel::handleScrollWheel(x, y, clicks)) return TRUE; if (mMediaSource && mMediaSource->hasMedia()) mMediaSource->getMediaPlugin()->scrollEvent(0, clicks, gKeyboard->currentMask(TRUE)); @@ -199,6 +200,7 @@ BOOL LLMediaCtrl::handleScrollWheel( S32 x, S32 y, S32 clicks ) // BOOL LLMediaCtrl::handleMouseUp( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleMouseUp(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -223,6 +225,7 @@ BOOL LLMediaCtrl::handleMouseUp( S32 x, S32 y, MASK mask ) // BOOL LLMediaCtrl::handleMouseDown( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleMouseDown(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -242,6 +245,7 @@ BOOL LLMediaCtrl::handleMouseDown( S32 x, S32 y, MASK mask ) // BOOL LLMediaCtrl::handleRightMouseUp( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleRightMouseUp(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -266,6 +270,7 @@ BOOL LLMediaCtrl::handleRightMouseUp( S32 x, S32 y, MASK mask ) // BOOL LLMediaCtrl::handleRightMouseDown( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleRightMouseDown(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -285,6 +290,7 @@ BOOL LLMediaCtrl::handleRightMouseDown( S32 x, S32 y, MASK mask ) // BOOL LLMediaCtrl::handleDoubleClick( S32 x, S32 y, MASK mask ) { + if (LLPanel::handleDoubleClick(x, y, mask)) return TRUE; convertInputCoords(x, y); if (mMediaSource) @@ -339,6 +345,85 @@ void LLMediaCtrl::onFocusLost() // BOOL LLMediaCtrl::postBuild () { + LLLayoutStack::Params layout_p; + layout_p.name = "notification_stack"; + layout_p.rect = LLRect(0,getLocalRect().mTop,getLocalRect().mRight, 30); + layout_p.follows.flags = FOLLOWS_ALL; + layout_p.mouse_opaque = false; + layout_p.orientation = "vertical"; + + LLLayoutStack* stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p); + addChild(stackp); + + LLLayoutPanel::Params panel_p; + panel_p.rect = LLRect(0, 30, 800, 0); + panel_p.min_height = 30; + panel_p.name = "notification_area"; + panel_p.visible = false; + panel_p.user_resize = false; + panel_p.background_visible = true; + panel_p.bg_alpha_image.name = "Yellow_Gradient"; + panel_p.auto_resize = false; + LLLayoutPanel* notification_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); + stackp->addChild(notification_panel); + + panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>(); + panel_p.auto_resize = true; + panel_p.mouse_opaque = false; + LLLayoutPanel* dummy_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); + stackp->addChild(dummy_panel); + + layout_p = LLUICtrlFactory::getDefaultParams<LLLayoutStack>(); + layout_p.rect = LLRect(0, 30, 800, 0); + layout_p.follows.flags = FOLLOWS_ALL; + layout_p.orientation = "horizontal"; + stackp = LLUICtrlFactory::create<LLLayoutStack>(layout_p); + notification_panel->addChild(stackp); + + panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>(); + panel_p.rect.height = 30; + LLLayoutPanel* panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); + stackp->addChild(panel); + + LLIconCtrl::Params icon_p; + icon_p.name = "notification_icon"; + icon_p.rect = LLRect(5, 23, 21, 8); + panel->addChild(LLUICtrlFactory::create<LLIconCtrl>(icon_p)); + + LLTextBox::Params text_p; + text_p.rect = LLRect(31, 20, 430, 0); + text_p.text_color = LLColor4::black; + text_p.font = LLFontGL::getFontSansSerif(); + text_p.font.style = "BOLD"; + text_p.name = "notification_text"; + text_p.use_ellipses = true; + panel->addChild(LLUICtrlFactory::create<LLTextBox>(text_p)); + + panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>(); + panel_p.auto_resize = false; + panel_p.user_resize = false; + panel_p.name="form_elements"; + panel_p.rect = LLRect(0, 30, 130, 0); + LLLayoutPanel* form_elements_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); + stackp->addChild(form_elements_panel); + + panel_p = LLUICtrlFactory::getDefaultParams<LLLayoutPanel>(); + panel_p.auto_resize = false; + panel_p.user_resize = false; + panel_p.rect = LLRect(0, 30, 25, 0); + LLLayoutPanel* close_panel = LLUICtrlFactory::create<LLLayoutPanel>(panel_p); + stackp->addChild(close_panel); + + LLButton::Params button_p; + button_p.name = "close_notification"; + button_p.rect = LLRect(5, 23, 21, 7); + button_p.image_color=LLUIColorTable::instance().getColor("DkGray_66"); + button_p.image_unselected.name="Icon_Close_Foreground"; + button_p.image_selected.name="Icon_Close_Press"; + button_p.click_callback.function = boost::bind(&LLMediaCtrl::onCloseNotification, this); + + close_panel->addChild(LLUICtrlFactory::create<LLButton>(button_p)); + setVisibleCallback(boost::bind(&LLMediaCtrl::onVisibilityChange, this, _2)); return TRUE; } @@ -347,6 +432,7 @@ BOOL LLMediaCtrl::postBuild () // BOOL LLMediaCtrl::handleKeyHere( KEY key, MASK mask ) { + if (LLPanel::handleKeyHere(key, mask)) return TRUE; BOOL result = FALSE; if (mMediaSource) @@ -372,6 +458,7 @@ void LLMediaCtrl::handleVisibilityChange ( BOOL new_visibility ) // BOOL LLMediaCtrl::handleUnicodeCharHere(llwchar uni_char) { + if (LLPanel::handleUnicodeCharHere(uni_char)) return TRUE; BOOL result = FALSE; if (mMediaSource) @@ -572,6 +659,15 @@ void LLMediaCtrl::setHomePageUrl( const std::string& urlIn, const std::string& m } } +void LLMediaCtrl::setTarget(const std::string& target) +{ + mTarget = target; + if (mMediaSource) + { + mMediaSource->setTarget(mTarget); + } +} + //////////////////////////////////////////////////////////////////////////////// // bool LLMediaCtrl::setCaretColor(unsigned int red, unsigned int green, unsigned int blue) @@ -613,6 +709,7 @@ bool LLMediaCtrl::ensureMediaSourceExists() { mMediaSource->setUsedInUI(true); mMediaSource->setHomeURL(mHomePageUrl, mHomePageMimeType); + mMediaSource->setTarget(mTarget); mMediaSource->setVisible( getVisible() ); mMediaSource->addObserver( this ); mMediaSource->setBackgroundColor( getBackgroundColor() ); @@ -824,6 +921,10 @@ void LLMediaCtrl::draw() if ( mBorder && mBorder->getVisible() ) mBorder->setKeyboardFocusHighlight( gFocusMgr.childHasKeyboardFocus( this ) ); + if (mCurNotification && !mCurNotification->isActive()) + { + hideNotification(); + } LLPanel::draw(); @@ -890,6 +991,7 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) case MEDIA_EVENT_NAVIGATE_BEGIN: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAVIGATE_BEGIN, url is " << self->getNavigateURI() << LL_ENDL; + hideNotification(); }; break; @@ -924,9 +1026,27 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) case MEDIA_EVENT_CLICK_LINK_HREF: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, target is \"" << self->getClickTarget() << "\", uri is " << self->getClickURL() << LL_ENDL; + // retrieve the event parameters + std::string url = self->getClickURL(); + std::string target = self->getClickTarget(); + std::string uuid = self->getClickUUID(); + + LLNotification::Params notify_params; + notify_params.name = "PopupAttempt"; + notify_params.payload = LLSD().with("target", target).with("url", url).with("uuid", uuid).with("media_id", getKey()); + notify_params.functor.function = boost::bind(&LLMediaCtrl::onPopup, this, _1, _2); + + if (mTrusted) + { + LLNotifications::instance().forceResponse(notify_params, 0); + } + else + { + LLNotifications::instance().add(notify_params); + } + break; }; - break; - + case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_NOFOLLOW, uri is " << self->getClickURL() << LL_ENDL; @@ -950,6 +1070,24 @@ void LLMediaCtrl::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAME_CHANGED" << LL_ENDL; }; break; + + case MEDIA_EVENT_CLOSE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLOSE_REQUEST" << LL_ENDL; + } + break; + + case MEDIA_EVENT_PICK_FILE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << LL_ENDL; + } + break; + + case MEDIA_EVENT_GEOMETRY_CHANGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE, uuid is " << self->getClickUUID() << LL_ENDL; + } + break; }; // chain all events to any potential observers of this object. @@ -963,3 +1101,113 @@ std::string LLMediaCtrl::getCurrentNavUrl() return mCurrentNavUrl; } +void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response) +{ + if (response["open"]) + { + LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]); + } + else + { + // Make sure the opening instance knows its window open request was denied, so it can clean things up. + LLViewerMedia::proxyWindowClosed(notification["payload"]["uuid"]); + } + +} + +void LLMediaCtrl::onCloseNotification() +{ + LLNotifications::instance().cancel(mCurNotification); +} + +void LLMediaCtrl::onClickIgnore(LLUICtrl* ctrl) +{ + bool check = ctrl->getValue().asBoolean(); + if (mCurNotification && mCurNotification->getForm()->getIgnoreType() == LLNotificationForm::IGNORE_SHOW_AGAIN) + { + // question was "show again" so invert value to get "ignore" + check = !check; + } + mCurNotification->setIgnored(check); +} + +void LLMediaCtrl::onClickNotificationButton(const std::string& name) +{ + if (!mCurNotification) return; + + LLSD response = mCurNotification->getResponseTemplate(); + response[name] = true; + + mCurNotification->respond(response); +} + +void LLMediaCtrl::showNotification(LLNotificationPtr notify) +{ + mCurNotification = notify; + + // add popup here + LLSD payload = notify->getPayload(); + + LLNotificationFormPtr formp = notify->getForm(); + LLLayoutPanel& panel = getChildRef<LLLayoutPanel>("notification_area"); + panel.setVisible(true); + panel.getChild<LLUICtrl>("notification_icon")->setValue(notify->getIcon()); + panel.getChild<LLUICtrl>("notification_text")->setValue(notify->getMessage()); + panel.getChild<LLUICtrl>("notification_text")->setToolTip(notify->getMessage()); + LLNotificationForm::EIgnoreType ignore_type = formp->getIgnoreType(); + LLLayoutPanel& form_elements = panel.getChildRef<LLLayoutPanel>("form_elements"); + form_elements.deleteAllChildren(); + + const S32 FORM_PADDING_HORIZONTAL = 10; + const S32 FORM_PADDING_VERTICAL = 3; + S32 cur_x = FORM_PADDING_HORIZONTAL; + + if (ignore_type != LLNotificationForm::IGNORE_NO) + { + LLCheckBoxCtrl::Params checkbox_p; + checkbox_p.name = "ignore_check"; + checkbox_p.rect = LLRect(cur_x, form_elements.getRect().getHeight() - FORM_PADDING_VERTICAL, cur_x, FORM_PADDING_VERTICAL); + checkbox_p.label = formp->getIgnoreMessage(); + checkbox_p.label_text.text_color = LLColor4::black; + checkbox_p.commit_callback.function = boost::bind(&LLMediaCtrl::onClickIgnore, this, _1); + checkbox_p.initial_value = formp->getIgnored(); + + LLCheckBoxCtrl* check = LLUICtrlFactory::create<LLCheckBoxCtrl>(checkbox_p); + check->setRect(check->getBoundingRect()); + form_elements.addChild(check); + cur_x = check->getRect().mRight + FORM_PADDING_HORIZONTAL; + } + + for (S32 i = 0; i < formp->getNumElements(); i++) + { + LLSD form_element = formp->getElement(i); + if (form_element["type"].asString() == "button") + { + LLButton::Params button_p; + button_p.name = form_element["name"]; + button_p.label = form_element["text"]; + button_p.rect = LLRect(cur_x, form_elements.getRect().getHeight() - FORM_PADDING_VERTICAL, cur_x, FORM_PADDING_VERTICAL); + button_p.click_callback.function = boost::bind(&LLMediaCtrl::onClickNotificationButton, this, form_element["name"].asString()); + button_p.auto_resize = true; + + LLButton* button = LLUICtrlFactory::create<LLButton>(button_p); + button->autoResize(); + form_elements.addChild(button); + + cur_x = button->getRect().mRight + FORM_PADDING_HORIZONTAL; + } + } + + + form_elements.reshape(cur_x, form_elements.getRect().getHeight()); + + //LLWeb::loadURL(payload["url"], payload["target"]); +} + +void LLMediaCtrl::hideNotification() +{ + LLLayoutPanel& panel = getChildRef<LLLayoutPanel>("notification_area"); + panel.setVisible(FALSE); + + mCurNotification.reset(); +} diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 755d1e1b046b33fbf7b52865bd3c083648b759cc..65dfbbff7864732ad2df9a2523b5198f6671aaee 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -40,7 +40,8 @@ class LLUICtrlFactory; class LLMediaCtrl : public LLPanel, public LLViewerMediaObserver, - public LLViewerMediaEventEmitter + public LLViewerMediaEventEmitter, + public LLInstanceTracker<LLMediaCtrl, LLUUID> { LOG_CLASS(LLMediaCtrl); public: @@ -51,7 +52,8 @@ class LLMediaCtrl : Optional<bool> border_visible, ignore_ui_scale, hide_loading, - decouple_texture_size; + decouple_texture_size, + trusted_content; Optional<S32> texture_width, texture_height; @@ -59,6 +61,7 @@ class LLMediaCtrl : Optional<LLUIColor> caret_color; Optional<std::string> initial_mime_type; + Optional<std::string> media_id; Params(); }; @@ -103,11 +106,11 @@ class LLMediaCtrl : // Javascript or some other mechanism. However, we need the search // floater and login page to handle these URLs. Those are safe // because we control the page content. See DEV-9530. JC. - void setTrusted( bool valIn ); - void setHomePageUrl( const std::string& urlIn, const std::string& mime_type = LLStringUtil::null ); std::string getHomePageUrl(); + void setTarget(const std::string& target); + // set/clear URL to visit when a 404 page is reached void set404RedirectUrl( std::string redirect_url ); void clr404RedirectUrl(); @@ -140,6 +143,8 @@ class LLMediaCtrl : void setTextureSize(S32 width, S32 height); + void showNotification(boost::shared_ptr<class LLNotification> notify); + void hideNotification(); // over-rides virtual BOOL handleKeyHere( KEY key, MASK mask); @@ -161,16 +166,21 @@ class LLMediaCtrl : private: void onVisibilityChange ( const LLSD& new_visibility ); + void onPopup(const LLSD& notification, const LLSD& response); + void onCloseNotification(); + void onClickNotificationButton(const std::string& name); + void onClickIgnore(LLUICtrl* ctrl); const S32 mTextureDepthBytes; LLUUID mMediaTextureID; LLViewBorder* mBorder; bool mFrequentUpdates; bool mForceUpdate; - bool mTrusted; + const bool mTrusted; std::string mHomePageUrl; std::string mHomePageMimeType; std::string mCurrentNavUrl; + std::string mTarget; bool mIgnoreUIScale; bool mAlwaysRefresh; viewer_media_t mMediaSource; @@ -183,6 +193,7 @@ class LLMediaCtrl : S32 mTextureWidth; S32 mTextureHeight; bool mClearCache; + boost::shared_ptr<class LLNotification> mCurNotification; }; #endif // LL_LLMediaCtrl_H diff --git a/indra/newview/llmorphview.h b/indra/newview/llmorphview.h index d135659ba212ba4452f1120b006bff0cceffa484..1d8ee8e9441c65f8ac11ea2a8e6206642bf3be63 100644 --- a/indra/newview/llmorphview.h +++ b/indra/newview/llmorphview.h @@ -32,7 +32,6 @@ #include "llframetimer.h" class LLJoint; -class LLFloaterCustomize; class LLMorphView : public LLView { diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 3d0f4cc1ed40528d8d96987522f24b2ba9dcee42..6658e1d7e89b6eefeae012e711ad50ed616a4b6d 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -39,7 +39,9 @@ #include "llvoavatarself.h" // to check gAgentAvatarp->isSitting() #include "llbottomtray.h" #include "llbutton.h" +#include "llfirstuse.h" #include "llfloaterreg.h" +#include "llhints.h" #include "lljoystickbutton.h" #include "lluictrlfactory.h" #include "llviewerwindow.h" @@ -161,6 +163,7 @@ void LLFloaterMove::setVisible(BOOL visible) if (visible) { + LLFirstUse::notMoving(false); // Attach the Stand/Stop Flying panel. LLPanelStandStopFlying* ssf_panel = LLPanelStandStopFlying::getInstance(); ssf_panel->reparent(this); @@ -560,6 +563,11 @@ void LLPanelStandStopFlying::setStandStopFlyingMode(EStandStopFlyingMode mode) { LLPanelStandStopFlying* panel = getInstance(); + if (mode == SSFM_STAND) + { + LLFirstUse::sit(); + LLFirstUse::notMoving(false); + } panel->mStandButton->setVisible(SSFM_STAND == mode); panel->mStopFlyingButton->setVisible(SSFM_STOP_FLYING == mode); @@ -590,6 +598,7 @@ BOOL LLPanelStandStopFlying::postBuild() mStandButton->setCommitCallback(boost::bind(&LLPanelStandStopFlying::onStandButtonClick, this)); mStandButton->setCommitCallback(boost::bind(&LLFloaterMove::enableInstance, TRUE)); mStandButton->setVisible(FALSE); + LLHints::registerHintTarget("stand_btn", mStandButton->getHandle()); mStopFlyingButton = getChild<LLButton>("stop_fly_btn"); //mStopFlyingButton->setCommitCallback(boost::bind(&LLFloaterMove::setFlyingMode, FALSE)); @@ -688,7 +697,7 @@ void LLPanelStandStopFlying::reparent(LLFloaterMove* move_view) LLPanelStandStopFlying* LLPanelStandStopFlying::getStandStopFlyingPanel() { LLPanelStandStopFlying* panel = new LLPanelStandStopFlying(); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_stand_stop_flying.xml"); + panel->buildFromFile("panel_stand_stop_flying.xml"); panel->setVisible(FALSE); //LLUI::getRootView()->addChild(panel); @@ -701,6 +710,8 @@ LLPanelStandStopFlying* LLPanelStandStopFlying::getStandStopFlyingPanel() void LLPanelStandStopFlying::onStandButtonClick() { + LLFirstUse::sit(false); + LLSelectMgr::getInstance()->deselectAllForStandingUp(); gAgent.setControlFlags(AGENT_CONTROL_STAND_UP); diff --git a/indra/newview/llnamebox.cpp b/indra/newview/llnamebox.cpp index 74d4217899dd5255e3dde8c8959d7906716d60cd..c31da84f78cb0dab9b9bd7561369fbd78aca4569 100644 --- a/indra/newview/llnamebox.cpp +++ b/indra/newview/llnamebox.cpp @@ -47,6 +47,7 @@ LLNameBox::LLNameBox(const Params& p) { mNameID = LLUUID::null; mLink = p.link; + mParseHTML = mLink; // STORM-215 mInitialValue = p.initial_value().asString(); LLNameBox::sInstances.insert(this); setText(LLStringUtil::null); @@ -119,7 +120,7 @@ void LLNameBox::setName(const std::string& name, BOOL is_group) std::string url; if (is_group) - url = "[secondlife:///app/group/" + LLURI::escape(name) + "/about " + name + "]"; + url = "[secondlife:///app/group/" + mNameID.asString() + "/about " + name + "]"; else url = "[secondlife:///app/agent/" + mNameID.asString() + "/about " + name + "]"; diff --git a/indra/newview/llnamelistctrl.cpp b/indra/newview/llnamelistctrl.cpp index e7e60f544cdf0b5e9296ac02609824e7293cbdf1..6521ae3b1e8302228db6dbf2bcdfcea1dd18980c 100644 --- a/indra/newview/llnamelistctrl.cpp +++ b/indra/newview/llnamelistctrl.cpp @@ -253,7 +253,8 @@ void LLNameListCtrl::addNameItem(LLNameListCtrl::NameItem& item, EAddPosition po LLScrollListItem* LLNameListCtrl::addElement(const LLSD& element, EAddPosition pos, void* userdata) { LLNameListCtrl::NameItem item_params; - LLParamSDParser::instance().readSD(element, item_params); + LLParamSDParser parser; + parser.readSD(element, item_params); item_params.userdata = userdata; return addNameItemRow(item_params, pos); } diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 18bba6e358c657091f06a286670a943e05680fc8..58849393b40ab5aca3f3cc5a39733def909426eb 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -272,7 +272,7 @@ LLNavigationBar::LLNavigationBar() mPurgeTPHistoryItems(false), mSaveToLocationHistory(false) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_navigation_bar.xml"); + buildFromFile( "panel_navigation_bar.xml"); // set a listener function for LoginComplete event LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLNavigationBar::handleLoginComplete, this)); diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index a8e4a759b7a3f1ac1a2e5ee4544c789c038e12bc..932ad75f298d43486d76b9c0d634b6d81c526c3d 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -32,6 +32,7 @@ #include "llfloaterreg.h" #include "lltrans.h" +#include "llfirstuse.h" #include "llnearbychatbar.h" #include "llbottomtray.h" #include "llagent.h" @@ -391,8 +392,7 @@ LLCtrlListInterface* LLGestureComboList::getListInterface() } LLNearbyChatBar::LLNearbyChatBar() - : LLPanel() - , mChatBox(NULL) +: mChatBox(NULL) { mSpeakerMgr = LLLocalSpeakerMgr::getInstance(); } @@ -484,6 +484,7 @@ BOOL LLNearbyChatBar::matchChatTypeTrigger(const std::string& in_str, std::strin void LLNearbyChatBar::onChatBoxKeystroke(LLLineEditor* caller, void* userdata) { + LLFirstUse::otherAvatarChatFirst(false); LLNearbyChatBar* self = (LLNearbyChatBar *)userdata; @@ -873,14 +874,14 @@ class LLChatHandler : public LLCommandHandler } else { - S32 channel = tokens[0].asInteger(); + S32 channel = tokens[0].asInteger(); // VWR-19499 Restrict function to chat channels greater than 0. if ((channel > 0) && (channel < 2147483647)) { retval = true; - // Send unescaped message, see EXT-6353. - std::string unescaped_mesg (LLURI::unescape(tokens[1].asString())); - send_chat_from_viewer(unescaped_mesg, CHAT_TYPE_NORMAL, channel); + // Send unescaped message, see EXT-6353. + std::string unescaped_mesg (LLURI::unescape(tokens[1].asString())); + send_chat_from_viewer(unescaped_mesg, CHAT_TYPE_NORMAL, channel); } else { diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index a747c228a6683ea35bb23d8c78d89236ae598710..47d32e57fbef76394c36831343effdd4e6b26760 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -31,7 +31,9 @@ #include "llbottomtray.h" #include "llchatitemscontainerctrl.h" +#include "llfirstuse.h" #include "llfloaterscriptdebug.h" +#include "llhints.h" #include "llnearbychat.h" #include "llrecentpeople.h" @@ -54,8 +56,15 @@ LLToastPanelBase* createToastPanel() class LLNearbyChatScreenChannel: public LLScreenChannelBase { + LOG_CLASS(LLNearbyChatScreenChannel); public: - LLNearbyChatScreenChannel(const LLUUID& id):LLScreenChannelBase(id) { mStopProcessing = false;}; + typedef std::vector<LLHandle<LLToast> > toast_vec_t; + typedef std::list<LLHandle<LLToast> > toast_list_t; + + LLNearbyChatScreenChannel(const LLUUID& id):LLScreenChannelBase(id) + { + mStopProcessing = false; + } void addNotification (LLSD& notification); void arrangeToasts (); @@ -64,7 +73,7 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase typedef boost::function<LLToastPanelBase* (void )> create_toast_panel_callback_t; void setCreatePanelCallback(create_toast_panel_callback_t value) { m_create_toast_panel_callback_t = value;} - void onToastDestroyed (LLToast* toast); + void onToastDestroyed (LLToast* toast, bool app_quitting); void onToastFade (LLToast* toast); void reshape (S32 width, S32 height, BOOL called_from_parent); @@ -75,33 +84,34 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase } // hide all toasts from screen, but not remove them from a channel - virtual void hideToastsFromScreen() - { - }; // removes all toasts from a channel virtual void removeToastsFromChannel() { - for(std::vector<LLToast*>::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it) + for(toast_vec_t::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it) { - addToToastPool((*it)); + addToToastPool(it->get()); } m_active_toasts.clear(); }; virtual void deleteAllChildren() { + LL_DEBUGS("NearbyChat") << "Clearing toast pool" << llendl; m_toast_pool.clear(); m_active_toasts.clear(); LLScreenChannelBase::deleteAllChildren(); } protected: + void deactivateToast(LLToast* toast); void addToToastPool(LLToast* toast) { + if (!toast) return; + LL_DEBUGS("NearbyChat") << "Pooling toast" << llendl; toast->setVisible(FALSE); toast->stopTimer(); toast->setIsHidden(true); - m_toast_pool.push_back(toast); + m_toast_pool.push_back(toast->getHandle()); } void createOverflowToast(S32 bottom, F32 timer); @@ -110,31 +120,85 @@ class LLNearbyChatScreenChannel: public LLScreenChannelBase bool createPoolToast(); - std::vector<LLToast*> m_active_toasts; - std::list<LLToast*> m_toast_pool; + toast_vec_t m_active_toasts; + toast_list_t m_toast_pool; bool mStopProcessing; }; +//----------------------------------------------------------------------------------------------- +// LLNearbyChatToast +//----------------------------------------------------------------------------------------------- + +// We're deriving from LLToast to be able to override onClose() +// in order to handle closing nearby chat toasts properly. +class LLNearbyChatToast : public LLToast +{ + LOG_CLASS(LLNearbyChatToast); +public: + LLNearbyChatToast(const LLToast::Params& p, LLNearbyChatScreenChannel* nc_channelp) + : LLToast(p), + mNearbyChatScreenChannelp(nc_channelp) + { + } + + /*virtual*/ void onClose(bool app_quitting); + +private: + LLNearbyChatScreenChannel* mNearbyChatScreenChannelp; +}; + +//----------------------------------------------------------------------------------------------- +// LLNearbyChatScreenChannel +//----------------------------------------------------------------------------------------------- + +void LLNearbyChatScreenChannel::deactivateToast(LLToast* toast) +{ + toast_vec_t::iterator pos = std::find(m_active_toasts.begin(), m_active_toasts.end(), toast->getHandle()); + + if (pos == m_active_toasts.end()) + { + llassert(pos == m_active_toasts.end()); + return; + } + + LL_DEBUGS("NearbyChat") << "Deactivating toast" << llendl; + m_active_toasts.erase(pos); +} + void LLNearbyChatScreenChannel::createOverflowToast(S32 bottom, F32 timer) { //we don't need overflow toast in nearby chat } -void LLNearbyChatScreenChannel::onToastDestroyed(LLToast* toast) +void LLNearbyChatScreenChannel::onToastDestroyed(LLToast* toast, bool app_quitting) { + LL_DEBUGS("NearbyChat") << "Toast destroyed (app_quitting=" << app_quitting << ")" << llendl; + + if (app_quitting) + { + // Viewer is quitting. + // Immediately stop processing chat messages (EXT-1419). mStopProcessing = true; } + else + { + // The toast is being closed by user (STORM-192). + // Remove it from the list of active toasts to prevent + // further references to the invalid pointer. + deactivateToast(toast); + } +} void LLNearbyChatScreenChannel::onToastFade(LLToast* toast) { + LL_DEBUGS("NearbyChat") << "Toast fading" << llendl; + //fade mean we put toast to toast pool if(!toast) return; - std::vector<LLToast*>::iterator pos = std::find(m_active_toasts.begin(),m_active_toasts.end(),toast); - if(pos!=m_active_toasts.end()) - m_active_toasts.erase(pos); + deactivateToast(toast); addToToastPool(toast); @@ -153,13 +217,13 @@ bool LLNearbyChatScreenChannel::createPoolToast() p.lifetime_secs = gSavedSettings.getS32("NearbyToastLifeTime"); p.fading_time_secs = gSavedSettings.getS32("NearbyToastFadingTime"); - LLToast* toast = new LLToast(p); + LLToast* toast = new LLNearbyChatToast(p, this); toast->setOnFadeCallback(boost::bind(&LLNearbyChatScreenChannel::onToastFade, this, _1)); - toast->setOnToastDestroyedCallback(boost::bind(&LLNearbyChatScreenChannel::onToastDestroyed, this, _1)); - - m_toast_pool.push_back(toast); + + LL_DEBUGS("NearbyChat") << "Creating and pooling toast" << llendl; + m_toast_pool.push_back(toast->getHandle()); return true; } @@ -177,17 +241,20 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification) { LLUUID fromID = notification["from_id"].asUUID(); // agent id or object id std::string from = notification["from"].asString(); - LLToast* toast = m_active_toasts[0]; - LLNearbyChatToastPanel* panel = dynamic_cast<LLNearbyChatToastPanel*>(toast->getPanel()); - - if(panel && panel->messageID() == fromID && panel->getFromName() == from && panel->canAddText()) + LLToast* toast = m_active_toasts[0].get(); + if (toast) { - panel->addMessage(notification); - toast->reshapeToPanel(); - toast->resetTimer(); - - arrangeToasts(); - return; + LLNearbyChatToastPanel* panel = dynamic_cast<LLNearbyChatToastPanel*>(toast->getPanel()); + + if(panel && panel->messageID() == fromID && panel->getFromName() == from && panel->canAddText()) + { + panel->addMessage(notification); + toast->reshapeToPanel(); + toast->resetTimer(); + + arrangeToasts(); + return; + } } } @@ -196,6 +263,7 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification) if(m_toast_pool.empty()) { //"pool" is empty - create one more panel + LL_DEBUGS("NearbyChat") << "Empty pool" << llendl; if(!createPoolToast())//created toast will go to pool. so next call will find it return; addNotification(notification); @@ -215,7 +283,8 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification) //take 1st element from pool, (re)initialize it, put it in active toasts - LLToast* toast = m_toast_pool.back(); + LL_DEBUGS("NearbyChat") << "Getting toast from pool" << llendl; + LLToast* toast = m_toast_pool.back().get(); m_toast_pool.pop_back(); @@ -228,25 +297,36 @@ void LLNearbyChatScreenChannel::addNotification(LLSD& notification) toast->reshapeToPanel(); toast->resetTimer(); - m_active_toasts.push_back(toast); + m_active_toasts.push_back(toast->getHandle()); arrangeToasts(); } void LLNearbyChatScreenChannel::arrangeToasts() { - if(m_active_toasts.size() == 0 || isHovering()) - return; - - hideToastsFromScreen(); + if(!isHovering()) + { + showToastsBottom(); + } - showToastsBottom(); + if (m_active_toasts.empty()) + { + LLHints::registerHintTarget("incoming_chat", LLHandle<LLView>()); + } + else + { + LLToast* toast = m_active_toasts.front().get(); + if (toast) + { + LLHints::registerHintTarget("incoming_chat", m_active_toasts.front().get()->LLView::getHandle()); + } + } } -int sort_toasts_predicate(LLToast* first,LLToast* second) +int sort_toasts_predicate(LLHandle<LLToast> first, LLHandle<LLToast> second) { - F32 v1 = first->getTimer()->getEventTimer().getElapsedTimeF32(); - F32 v2 = second->getTimer()->getEventTimer().getElapsedTimeF32(); + F32 v1 = first.get()->getTimer()->getEventTimer().getElapsedTimeF32(); + F32 v2 = second.get()->getTimer()->getEventTimer().getElapsedTimeF32(); return v1 < v2; } @@ -264,20 +344,22 @@ void LLNearbyChatScreenChannel::showToastsBottom() //calc max visible item and hide other toasts. - for(std::vector<LLToast*>::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it) + for(toast_vec_t::iterator it = m_active_toasts.begin(); it != m_active_toasts.end(); ++it) { - S32 toast_top = bottom + (*it)->getRect().getHeight() + margin; + LLToast* toast = it->get(); + if (!toast) continue; + + S32 toast_top = bottom + toast->getRect().getHeight() + margin; if(toast_top > gFloaterView->getRect().getHeight()) { while(it!=m_active_toasts.end()) { - addToToastPool((*it)); + addToToastPool(it->get()); it=m_active_toasts.erase(it); } break; } - LLToast* toast = (*it); toast_rect = toast->getRect(); toast_rect.setLeftTopAndSize(getRect().mLeft , bottom + toast_rect.getHeight(), toast_rect.getWidth() ,toast_rect.getHeight()); @@ -288,14 +370,17 @@ void LLNearbyChatScreenChannel::showToastsBottom() // use reverse order to provide correct z-order and avoid toast blinking - for(std::vector<LLToast*>::reverse_iterator it = m_active_toasts.rbegin(); it != m_active_toasts.rend(); ++it) + for(toast_vec_t::reverse_iterator it = m_active_toasts.rbegin(); it != m_active_toasts.rend(); ++it) + { + LLToast* toast = it->get(); + if (toast) { - LLToast* toast = (*it); toast->setIsHidden(false); toast->setVisible(TRUE); + } + } } -} void LLNearbyChatScreenChannel::reshape (S32 width, S32 height, BOOL called_from_parent) { @@ -340,8 +425,6 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) { if(chat_msg.mMuted == TRUE) return; - if(chat_msg.mSourceType == CHAT_SOURCE_AGENT && chat_msg.mFromID.notNull()) - LLRecentPeople::instance().add(chat_msg.mFromID); if(chat_msg.mText.empty()) return;//don't process empty messages @@ -445,6 +528,12 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) channel->addNotification(notification); } + if(chat_msg.mSourceType == CHAT_SOURCE_AGENT + && chat_msg.mFromID.notNull() + && chat_msg.mFromID != gAgentID) + { + LLFirstUse::otherAvatarChatFirst(); + } } void LLNearbyChatHandler::onDeleteToast(LLToast* toast) @@ -452,4 +541,14 @@ void LLNearbyChatHandler::onDeleteToast(LLToast* toast) } +//----------------------------------------------------------------------------------------------- +// LLNearbyChatToast +//----------------------------------------------------------------------------------------------- + +// virtual +void LLNearbyChatToast::onClose(bool app_quitting) +{ + mNearbyChatScreenChannelp->onToastDestroyed(this, app_quitting); +} +// EOF diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp index dcbf6b64ce295ef9d454162acac1c9677a533210..9d824dcd592f3cd5e5433a7fd1883217491c7384 100644 --- a/indra/newview/llnotificationalerthandler.cpp +++ b/indra/newview/llnotificationalerthandler.cpp @@ -133,7 +133,7 @@ bool LLAlertHandler::processNotification(const LLSD& notify) if(channel) channel->killToastByNotificationID(notification->getID()); } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationgrouphandler.cpp b/indra/newview/llnotificationgrouphandler.cpp index 9933a8a49c88876421bec2bc7c5b72f2da32c26e..9b7fdaef82b0a08f76092edd13e4e2719bfdcb9d 100644 --- a/indra/newview/llnotificationgrouphandler.cpp +++ b/indra/newview/llnotificationgrouphandler.cpp @@ -104,7 +104,7 @@ bool LLGroupHandler::processNotification(const LLSD& notify) { mChannel->killToastByNotificationID(notification->getID()); } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index 060eccf5c7a1666b31704fb6db23b3af3cfb0163..28a69f2373605ebdfd41407c5928348f74391361 100644 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -263,6 +263,29 @@ class LLOfferHandler : public LLSysHandler void onRejectToast(LLUUID& id); }; +/** + * Handler for UI hints. + */ +class LLHintHandler : public LLSingleton<LLHintHandler> +{ +public: + LLHintHandler(); + virtual ~LLHintHandler(); + + // base interface functions + virtual bool processNotification(const LLSD& notify); +}; + +/** + * Handler for browser notifications + */ +class LLBrowserNotification : public LLSingleton<LLBrowserNotification> +{ +public: + virtual bool processNotification(const LLSD& notify); + +}; + class LLHandlerUtil { public: diff --git a/indra/newview/llnotificationhinthandler.cpp b/indra/newview/llnotificationhinthandler.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f7163cb04ff769d2c8a8a77be3b7dfcf1d6ae845 --- /dev/null +++ b/indra/newview/llnotificationhinthandler.cpp @@ -0,0 +1,58 @@ +/** + * @file llnotificationhinthandler.cpp + * @brief Notification Handler Class for UI Hints + * + * $LicenseInfo:firstyear=2000&license=viewerlgpl$ + * Second Life Viewer Source Code + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA + * $/LicenseInfo$ + */ + + +#include "llviewerprecompiledheaders.h" // must be first include + +#include "llnotificationhandler.h" +#include "llhints.h" +#include "llnotifications.h" + +using namespace LLNotificationsUI; + +LLHintHandler::LLHintHandler() +{ +} + +LLHintHandler::~LLHintHandler() +{ +} + +bool LLHintHandler::processNotification(const LLSD& notify) +{ + LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID()); + + std::string sigtype = notify["sigtype"].asString(); + if (sigtype == "add" || sigtype == "load") + { + LLHints::show(notification); + } + else if (sigtype == "delete") + { + LLHints::hide(notification); + } + return false; +} diff --git a/indra/newview/llnotificationmanager.cpp b/indra/newview/llnotificationmanager.cpp index 3bbf6cea16cb2c906726ade6f4d291fe331df784..69882271282d6a6c295d1f837f00352443b296ff 100644 --- a/indra/newview/llnotificationmanager.cpp +++ b/indra/newview/llnotificationmanager.cpp @@ -60,6 +60,8 @@ void LLNotificationManager::init() LLNotificationChannel::buildChannel("AlertModal", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alertmodal")); LLNotificationChannel::buildChannel("IM Notifications", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "notifytoast")); LLNotificationChannel::buildChannel("Offer", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "offer")); + LLNotificationChannel::buildChannel("Hints", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "hint")); + LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser")); LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); @@ -68,6 +70,8 @@ void LLNotificationManager::init() LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1)); + LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1)); + LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1)); mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD())); mNotifyHandlers["notifytip"] = boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD())); diff --git a/indra/newview/llnotificationofferhandler.cpp b/indra/newview/llnotificationofferhandler.cpp index 85f95bd0c718ef0a2f395e6df1ca24d4e9210bed..68fd65be0f9265eaa0bbcda5123ec552239b1c8b 100644 --- a/indra/newview/llnotificationofferhandler.cpp +++ b/indra/newview/llnotificationofferhandler.cpp @@ -179,7 +179,7 @@ bool LLOfferHandler::processNotification(const LLSD& notify) } } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index b4d28bb346ac531aaca75e5102e3266f83f7e6f6..45590c3cdba6b1794e97dc73fa45039b0bee7e83 100644 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -130,7 +130,7 @@ bool LLScriptHandler::processNotification(const LLSD& notify) mChannel->killToastByNotificationID(notification->getID()); } } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/llnotificationtiphandler.cpp b/indra/newview/llnotificationtiphandler.cpp index 94612975a2615e2849f9f60ed042c7e822f4d748..02b217fc9430736d143477bac3c537d4d52e7195 100644 --- a/indra/newview/llnotificationtiphandler.cpp +++ b/indra/newview/llnotificationtiphandler.cpp @@ -96,7 +96,7 @@ bool LLTipHandler::processNotification(const LLSD& notify) LLNearbyChat>("nearby_chat", LLSD()); if (nearby_chat->getVisible()) { - return true; + return false; } } @@ -121,7 +121,7 @@ bool LLTipHandler::processNotification(const LLSD& notify) // don't spawn toast for inventory accepted/declined offers if respective IM window is open (EXT-5909) if (!LLHandlerUtil::canSpawnToast(notification)) { - return true; + return false; } LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification); @@ -144,7 +144,7 @@ bool LLTipHandler::processNotification(const LLSD& notify) { mChannel->killToastByNotificationID(notification->getID()); } - return true; + return false; } //-------------------------------------------------------------------------- diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp index c0f7fa4abfb04f68d9049ef7ed6eca3216e47a82..db9d386b6b61934d6b247bf08add622055ab306f 100644 --- a/indra/newview/lloutfitslist.cpp +++ b/indra/newview/lloutfitslist.cpp @@ -63,6 +63,39 @@ bool LLOutfitTabNameComparator::compare(const LLAccordionCtrlTab* tab1, const LL return name1 < name2; } +struct outfit_accordion_tab_params : public LLInitParam::Block<outfit_accordion_tab_params, LLAccordionCtrlTab::Params> +{ + Mandatory<LLWearableItemsList::Params> wearable_list; + + outfit_accordion_tab_params() + : wearable_list("wearable_items_list") + {} +}; + +const outfit_accordion_tab_params& get_accordion_tab_params() +{ + static outfit_accordion_tab_params tab_params; + static bool initialized = false; + if (!initialized) + { + initialized = true; + + LLXMLNodePtr xmlNode; + if (LLUICtrlFactory::getLayeredXMLNode("outfit_accordion_tab.xml", xmlNode)) + { + LLXUIParser parser; + parser.readXUI(xmlNode, tab_params, "outfit_accordion_tab.xml"); + } + else + { + llwarns << "Failed to read xml of Outfit's Accordion Tab from outfit_accordion_tab.xml" << llendl; + } + } + + return tab_params; +} + + ////////////////////////////////////////////////////////////////////////// class LLOutfitListGearMenu @@ -156,12 +189,12 @@ class LLOutfitListGearMenu void onTakeOff() { // Take off selected outfit. - const LLUUID& selected_outfit_id = getSelectedOutfitID(); - if (selected_outfit_id.notNull()) - { - LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id); + const LLUUID& selected_outfit_id = getSelectedOutfitID(); + if (selected_outfit_id.notNull()) + { + LLAppearanceMgr::instance().takeOffOutfit(selected_outfit_id); + } } - } void onRename() { @@ -435,9 +468,12 @@ void LLOutfitsList::refreshList(const LLUUID& category_id) std::string name = cat->getName(); - static LLXMLNodePtr accordionXmlNode = getAccordionTabXMLNode(); - LLAccordionCtrlTab* tab = LLUICtrlFactory::defaultBuilder<LLAccordionCtrlTab>(accordionXmlNode, NULL, NULL); + outfit_accordion_tab_params tab_params(get_accordion_tab_params()); + LLAccordionCtrlTab* tab = LLUICtrlFactory::create<LLAccordionCtrlTab>(tab_params); if (!tab) continue; + LLWearableItemsList* wearable_list = LLUICtrlFactory::create<LLWearableItemsList>(tab_params.wearable_list); + wearable_list->setShape(tab->getLocalRect()); + tab->addChild(wearable_list); tab->setName(name); tab->setTitle(name); @@ -454,7 +490,7 @@ void LLOutfitsList::refreshList(const LLUUID& category_id) mAccordion->removeCollapsibleCtrl(tab); // kill removed tab - tab->die(); + tab->die(); continue; } @@ -727,19 +763,6 @@ bool LLOutfitsList::hasItemSelected() ////////////////////////////////////////////////////////////////////////// // Private methods ////////////////////////////////////////////////////////////////////////// -LLXMLNodePtr LLOutfitsList::getAccordionTabXMLNode() -{ - LLXMLNodePtr xmlNode = NULL; - bool success = LLUICtrlFactory::getLayeredXMLNode("outfit_accordion_tab.xml", xmlNode); - if (!success) - { - llwarns << "Failed to read xml of Outfit's Accordion Tab from outfit_accordion_tab.xml" << llendl; - return NULL; - } - - return xmlNode; -} - void LLOutfitsList::computeDifference( const LLInventoryModel::cat_array_t& vcats, uuid_vec_t& vadded, diff --git a/indra/newview/lloutfitslist.h b/indra/newview/lloutfitslist.h index faf6f7ce1e34c9b6d457758ce7665feec9a6d6c2..f73ae5bef2a85dbd73c00a87bfe24a7fd7f254e5 100644 --- a/indra/newview/lloutfitslist.h +++ b/indra/newview/lloutfitslist.h @@ -111,12 +111,6 @@ class LLOutfitsList : public LLPanelAppearanceTab bool hasItemSelected(); private: - /** - * Reads xml with accordion tab and Flat list from xml file. - * - * @return LLPointer to XMLNode with accordion tab and flat list. - */ - LLXMLNodePtr getAccordionTabXMLNode(); /** * Wrapper for LLCommonUtils::computeDifference. @see LLCommonUtils::computeDifference diff --git a/indra/newview/llpanelavatartag.cpp b/indra/newview/llpanelavatartag.cpp index d174b8da96108d2ca92a767e7df38c9d0b71ec6e..77d67c7b094ae384784b42573a4a2ac7d38bf4a9 100644 --- a/indra/newview/llpanelavatartag.cpp +++ b/indra/newview/llpanelavatartag.cpp @@ -37,7 +37,7 @@ LLPanelAvatarTag::LLPanelAvatarTag(const LLUUID& key, const std::string im_time) , mAvatarId(LLUUID::null) // , mFadeTimer() { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_avatar_tag.xml"); + buildFromFile( "panel_avatar_tag.xml"); setLeftButtonClickCallback(boost::bind(&LLPanelAvatarTag::onClick, this)); setAvatarId(key); setTime(im_time); diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index bf7214eb3b970fa882dea4fe383e5f2bee9aeeb9..6889b98ab1778e46ef334cb8f6d81b026c5df9c7 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -138,7 +138,7 @@ LLPanelClassifiedInfo::~LLPanelClassifiedInfo() LLPanelClassifiedInfo* LLPanelClassifiedInfo::create() { LLPanelClassifiedInfo* panel = new LLPanelClassifiedInfo(); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_classified_info.xml"); + panel->buildFromFile("panel_classified_info.xml"); return panel; } @@ -611,7 +611,7 @@ LLPanelClassifiedEdit::~LLPanelClassifiedEdit() LLPanelClassifiedEdit* LLPanelClassifiedEdit::create() { LLPanelClassifiedEdit* panel = new LLPanelClassifiedEdit(); - LLUICtrlFactory::getInstance()->buildPanel(panel, "panel_edit_classified.xml"); + panel->buildFromFile("panel_edit_classified.xml"); return panel; } diff --git a/indra/newview/llpanelgenerictip.cpp b/indra/newview/llpanelgenerictip.cpp index 2660814afc8d6719b3b5fcf96ccabe9536520190..4ccdaa78f3e674153a19a8b1dc810204af47d452 100644 --- a/indra/newview/llpanelgenerictip.cpp +++ b/indra/newview/llpanelgenerictip.cpp @@ -36,7 +36,7 @@ LLPanelGenericTip::LLPanelGenericTip( const LLNotificationPtr& notification) : LLPanelTipToast(notification) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_generic_tip.xml"); + buildFromFile( "panel_generic_tip.xml"); getChild<LLUICtrl>("message")->setValue(notification->getMessage()); diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index 62ed7acb1519416407a8753d1bc9a956276943cf..76b85d5bec3ab46fb70a49505ae529374c97858c 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject, //static void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id) { - LLPanelGroup* panel = LLSideTray::getInstance()->findChild<LLPanelGroup>("panel_group_info_sidetray"); + LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray"); if(!panel) return; panel->setGroupID(group_id); @@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject, const std::string& inventory_name, LLOfferInfo* inventory_offer) { - LLPanelGroup* panel = LLSideTray::getInstance()->findChild<LLPanelGroup>("panel_group_info_sidetray"); + LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray"); if(!panel) return; diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp index 840b98213d66bb841a2a2cd29bfc46708dfe31b4..3a31d99598b26bc2caacb8827047748c1d9c75d9 100644 --- a/indra/newview/llpanelgroupgeneral.cpp +++ b/indra/newview/llpanelgroupgeneral.cpp @@ -740,7 +740,7 @@ void LLPanelGroupGeneral::updateMembers() sSDTime += sd_timer.getElapsedTimeF32(); element_timer.reset(); - LLScrollListItem* member_row = mListVisibleMembers->addElement(row);//, ADD_SORTED); + LLScrollListItem* member_row = mListVisibleMembers->addElement(row); if ( member->isOwner() ) { diff --git a/indra/newview/llpanelgroupinvite.cpp b/indra/newview/llpanelgroupinvite.cpp index 535b2a9e2dea703af2e06e2a9cf7d15483a56649..b26bcc854cf216c8f5ff3cd783edf28556fa68ac 100644 --- a/indra/newview/llpanelgroupinvite.cpp +++ b/indra/newview/llpanelgroupinvite.cpp @@ -369,7 +369,7 @@ LLPanelGroupInvite::LLPanelGroupInvite(const LLUUID& group_id) mPendingUpdate(FALSE) { // Pass on construction of this panel to the control factory. - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_group_invite.xml"); + buildFromFile( "panel_group_invite.xml"); } LLPanelGroupInvite::~LLPanelGroupInvite() diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index d4736d22ae6dce6918c6a76e6e839b3078f627a4..8d8d9bc1c4452247dec00b9e3dcae314beff3a7a 100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -522,7 +522,7 @@ void LLPanelGroupLandMoney::impl::processGroupLand(LLMessageSystem* msg) row["columns"][4]["column"] = "hidden"; row["columns"][4]["value"] = hidden; - mGroupParcelsp->addElement(row, ADD_SORTED); + mGroupParcelsp->addElement(row); } } } diff --git a/indra/newview/llpanelgrouproles.cpp b/indra/newview/llpanelgrouproles.cpp index 579a271ce818ebee8ed51c220d14d1f35a753cd8..639364ff8de0dc37c0ceebb65f2a34094b8cbe28 100644 --- a/indra/newview/llpanelgrouproles.cpp +++ b/indra/newview/llpanelgrouproles.cpp @@ -1625,7 +1625,7 @@ void LLPanelGroupMembersSubTab::updateMembers() row["columns"][2]["value"] = mMemberProgress->second->getOnlineStatus(); row["columns"][2]["font"] = "SANSSERIF_SMALL"; - LLScrollListItem* member = mMembersList->addElement(row);//, ADD_SORTED); + LLScrollListItem* member = mMembersList->addElement(row); LLUUID id = member->getUUID(); mHasMatch = TRUE; diff --git a/indra/newview/llpanelhome.cpp b/indra/newview/llpanelhome.cpp index 93c4e0c9c7db8d5b184a8a6321158605e9d11010..b03bab31272a8cd5dfca70e90f21b8fd79c03a4e 100644 --- a/indra/newview/llpanelhome.cpp +++ b/indra/newview/llpanelhome.cpp @@ -61,7 +61,6 @@ BOOL LLPanelHome::postBuild() std::string url = LLViewerHome::getHomeURL(); mBrowser->addObserver(this); - mBrowser->setTrusted(true); mBrowser->setHomePageUrl(url); } diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 24bf67a000a19ba1b679ac1c0a31f98e3c1fbdc5..c4a484d368b413b328805c90666a7fa4da389592 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -197,7 +197,7 @@ LLLandmarksPanel::LLLandmarksPanel() mInventoryObserver = new LLLandmarksPanelObserver(this); gInventory.addObserver(mInventoryObserver); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_landmarks.xml"); + buildFromFile( "panel_landmarks.xml"); } LLLandmarksPanel::~LLLandmarksPanel() @@ -1013,9 +1013,9 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const // Disable "Show on Map" if landmark loading is in progress. return !gLandmarkList.isAssetInLoadedCallbackMap(asset_uuid); - } - else if ("rename" == command_name) - { + } + else if ("rename" == command_name) + { LLFolderViewItem* selected_item = getCurSelectedItem(); if (!selected_item) return false; @@ -1245,7 +1245,12 @@ void LLLandmarksPanel::doProcessParcelInfo(LLLandmark* landmark, landmark->getGlobalPos(landmark_global_pos); // let's toggle pick panel into panel places - LLPanel* panel_places = LLSideTray::getInstance()->getChild<LLPanel>("panel_places");//-> sidebar_places + LLPanel* panel_places = LLSideTray::getInstance()->getPanel("panel_places");//-> sidebar_places + if (!panel_places) + { + llassert(NULL != panel_places); + return; + } panel_places->addChild(panel_pick); LLRect paren_rect(panel_places->getRect()); panel_pick->reshape(paren_rect.getWidth(),paren_rect.getHeight(), TRUE); diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp index be1afbd8d70aa473f0a80fe5bbc148e0ed08a3ad..7c93d8a1f9ca3d1b075ee92a5cc2c0b3beec9d68 100644 --- a/indra/newview/llpanellogin.cpp +++ b/indra/newview/llpanellogin.cpp @@ -187,7 +187,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, // Logo mLogoImage = LLUI::getUIImage("startup_logo"); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_login.xml"); + buildFromFile( "panel_login.xml"); #if USE_VIEWER_AUTH //leave room for the login menu bar @@ -257,13 +257,6 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect, // Clear the browser's cache to avoid any potential for the cache messing up the login screen. web_browser->clearCache(); - // Need to handle login secondlife:///app/ URLs - web_browser->setTrusted( true ); - - // don't make it a tab stop until SL-27594 is fixed - web_browser->setTabStop(FALSE); - // web_browser->navigateToLocalPage( "loading", "loading.html" ); - reshapeBrowser(); // kick off a request to grab the url manually @@ -1104,9 +1097,10 @@ void LLPanelLogin::updateServerCombo() { if (!grid_choice->first.empty()) { - server_choice_combo->add(grid_choice->second, grid_choice->first, ADD_SORTED); + server_choice_combo->add(grid_choice->second, grid_choice->first); } } + server_choice_combo->sortByName(); server_choice_combo->addSeparator(ADD_TOP); diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index 27e054af349934b40c28ba0285bbf7c1669000f8..5b07e4863bb939c736057b2f6c9e6f7f950bff3a 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -642,7 +642,7 @@ LLFloaterInventoryFinder::LLFloaterInventoryFinder(LLPanelMainInventory* invento mPanelMainInventory(inventory_view), mFilter(inventory_view->getPanel()->getFilter()) { - LLUICtrlFactory::getInstance()->buildFloater(this, "floater_inventory_view_finder.xml", NULL); + buildFromFile("floater_inventory_view_finder.xml"); updateElementsFromFilter(); } diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index fb31206870985872c4df3d7562e78d8330572ae7..cf2cc14531fe5ef27cab9f3d434732d014687245 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -41,6 +41,7 @@ class LLFilterEditor; class LLTabContainer; class LLFloaterInventoryFinder; class LLMenuGL; +class LLFloater; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Class LLPanelMainInventory diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index 5cd4cea96d7bfbeb111ba20697c5d2494b7e0a12..36a3aae15fbcaca4b0eb222552e4b2159b2c2a28 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -162,7 +162,7 @@ void LLPanelMe::onCancelClicked() LLPanelMyProfileEdit::LLPanelMyProfileEdit() : LLPanelMyProfile() { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_edit_profile.xml"); + buildFromFile( "panel_edit_profile.xml"); setAvatarId(gAgent.getID()); } diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index 92c8365a7089d6d6c240ce4757b20b17437c0d34..2856ea9db1f20c1b0e3e39cf33410a59aaa76dea 100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -74,7 +74,7 @@ LLPanelMediaSettingsGeneral::LLPanelMediaSettingsGeneral() : mMediaEditable(false) { // build dialog from XML - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_general.xml"); + buildFromFile( "panel_media_settings_general.xml"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpanelmediasettingspermissions.cpp b/indra/newview/llpanelmediasettingspermissions.cpp index 339376cbf6a5c7b947a7b209b4bb8c11a8a56696..5378886b56613941294369937c5fbaf526eefc2c 100644 --- a/indra/newview/llpanelmediasettingspermissions.cpp +++ b/indra/newview/llpanelmediasettingspermissions.cpp @@ -59,7 +59,7 @@ LLPanelMediaSettingsPermissions::LLPanelMediaSettingsPermissions() : mPermsWorldControl( 0 ) { // build dialog from XML - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_permissions.xml"); + buildFromFile( "panel_media_settings_permissions.xml"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpanelmediasettingssecurity.cpp b/indra/newview/llpanelmediasettingssecurity.cpp index a0d4c2f761a601432b14f3de14f28d52f4858c15..b588e8f9306faf58dfdd5f1951808ba4801398e0 100644 --- a/indra/newview/llpanelmediasettingssecurity.cpp +++ b/indra/newview/llpanelmediasettingssecurity.cpp @@ -53,7 +53,7 @@ LLPanelMediaSettingsSecurity::LLPanelMediaSettingsSecurity() : mCommitCallbackRegistrar.add("Media.whitelistDelete", boost::bind(&LLPanelMediaSettingsSecurity::onBtnDel, this)); // build dialog from XML - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_media_settings_security.xml"); + buildFromFile( "panel_media_settings_security.xml"); } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpanelnearbymedia.cpp b/indra/newview/llpanelnearbymedia.cpp index 811d70ade318276afddb2e5a3af2e6173d658bbf..fcc67d68407a1bc157407437515188b15635fd7e 100644 --- a/indra/newview/llpanelnearbymedia.cpp +++ b/indra/newview/llpanelnearbymedia.cpp @@ -96,7 +96,7 @@ LLPanelNearByMedia::LLPanelNearByMedia() mCommitCallbackRegistrar.add("SelectedMediaCtrl.Zoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaZoom, this)); mCommitCallbackRegistrar.add("SelectedMediaCtrl.Unzoom", boost::bind(&LLPanelNearByMedia::onClickSelectedMediaUnzoom, this)); - LLUICtrlFactory::instance().buildPanel(this, "panel_nearby_media.xml"); + buildFromFile( "panel_nearby_media.xml"); } LLPanelNearByMedia::~LLPanelNearByMedia() diff --git a/indra/newview/llpanelonlinestatus.cpp b/indra/newview/llpanelonlinestatus.cpp index 2f1300e0f2a4c9740617978f8c5da072627fa5e1..8202dfe9a316a5bbfd260b9511afcfcb8a3c3441 100644 --- a/indra/newview/llpanelonlinestatus.cpp +++ b/indra/newview/llpanelonlinestatus.cpp @@ -35,7 +35,7 @@ LLPanelOnlineStatus::LLPanelOnlineStatus( LLPanelTipToast(notification) { - LLUICtrlFactory::getInstance()->buildPanel(this, + buildFromFile( "panel_online_status_toast.xml"); diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 54b0805a6c05f9b5bcc28d0bd0d4b123f523a21a..494db01f7742ee9a1fc692e3e82643f9fc2fd8e5 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -485,7 +485,7 @@ BOOL LLPanelOutfitEdit::postBuild() setVisibleCallback(boost::bind(&LLPanelOutfitEdit::onVisibilityChange, this, _2)); - mCOFWearables = getChild<LLCOFWearables>("cof_wearables_list"); + mCOFWearables = findChild<LLCOFWearables>("cof_wearables_list"); mCOFWearables->setCommitCallback(boost::bind(&LLPanelOutfitEdit::filterWearablesBySelectedItem, this)); mCOFWearables->getCOFCallbacks().mAddWearable = boost::bind(&LLPanelOutfitEdit::onAddWearableClicked, this); @@ -912,7 +912,7 @@ void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void) { LLUUID id_to_remove = mCOFWearables->getSelectedUUID(); LLWearableType::EType type = getWearableTypeByItemUUID(id_to_remove); - + LLAppearanceMgr::getInstance()->removeItemFromAvatar(id_to_remove); if (!mCOFWearables->getSelectedItem()) @@ -1031,7 +1031,7 @@ void LLPanelOutfitEdit::filterWearablesBySelectedItem(void) LLUUID selected_item_id = mWearableItemsList->getSelectedUUID(); LLViewerInventoryItem* item = gInventory.getLinkedItem(selected_item_id); if(item) - { + { showFilteredWearablesListView(item->getWearableType()); return; } diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp index c6a7bd88a0421547363e52c3b972eaa2eba6189e..d6d8a38ebef146495a1528e089cf500b5a280e36 100644 --- a/indra/newview/llpaneloutfitsinventory.cpp +++ b/indra/newview/llpaneloutfitsinventory.cpp @@ -217,15 +217,6 @@ void LLPanelOutfitsInventory::onSave() //payload["ids"].append(*it); LLNotificationsUtil::add("SaveOutfitAs", args, payload, boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1, _2)); - - //) - -/* - LLOutfitSaveAsDialog* save_as_dialog = LLFloaterReg::showTypedInstance<LLOutfitSaveAsDialog>("outfit_save_as", LLSD(outfit_name), TRUE); - if (save_as_dialog) - { - save_as_dialog->setSaveAsCommit(boost::bind(&LLPanelOutfitsInventory::onSaveCommit, this, _1 )); - }*/ } //static @@ -302,10 +293,10 @@ bool LLPanelOutfitsInventory::isActionEnabled(const LLSD& userdata) void LLPanelOutfitsInventory::initTabPanels() { - mCurrentOutfitPanel = getChild<LLPanelWearing>(COF_TAB_NAME); + mCurrentOutfitPanel = findChild<LLPanelWearing>(COF_TAB_NAME); mCurrentOutfitPanel->setSelectionChangeCallback(boost::bind(&LLPanelOutfitsInventory::updateVerbs, this)); - mMyOutfitsPanel = getChild<LLOutfitsList>(OUTFITS_TAB_NAME); + mMyOutfitsPanel = findChild<LLOutfitsList>(OUTFITS_TAB_NAME); mMyOutfitsPanel->setSelectionChangeCallback(boost::bind(&LLPanelOutfitsInventory::updateVerbs, this)); mAppearanceTabs = getChild<LLTabContainer>("appearance_tabs"); diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp index 7615a93a49421f6a131aed3c58190ab11df90c59..271728220cc7544a9c215bdfad04f68f979064aa 100644 --- a/indra/newview/llpanelpick.cpp +++ b/indra/newview/llpanelpick.cpp @@ -74,7 +74,7 @@ LLPanelPickInfo* LLPanelPickInfo::create() { LLPanelPickInfo* panel = new LLPanelPickInfo(); - LLUICtrlFactory::getInstance()->buildPanel(panel, XML_PANEL_PICK_INFO); + panel->buildFromFile(XML_PANEL_PICK_INFO); return panel; } @@ -344,7 +344,7 @@ void LLPanelPickInfo::onClickBack() LLPanelPickEdit* LLPanelPickEdit::create() { LLPanelPickEdit* panel = new LLPanelPickEdit(); - LLUICtrlFactory::getInstance()->buildPanel(panel, XML_PANEL_EDIT_PICK); + panel->buildFromFile(XML_PANEL_EDIT_PICK); return panel; } diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index a5c3c9faefc00dc61fc81d08f05f3038b7952c42..27787ac211a87d0457bf061fc6bf04cfebac0a93 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -1039,7 +1039,7 @@ LLPickItem::LLPickItem() , mSnapshotID(LLUUID::null) , mNeedData(true) { - LLUICtrlFactory::getInstance()->buildPanel(this,"panel_pick_list_item.xml"); + buildFromFile("panel_pick_list_item.xml"); } LLPickItem::~LLPickItem() @@ -1169,7 +1169,7 @@ LLClassifiedItem::LLClassifiedItem(const LLUUID& avatar_id, const LLUUID& classi , mAvatarId(avatar_id) , mClassifiedId(classified_id) { - LLUICtrlFactory::getInstance()->buildPanel(this,"panel_classifieds_list_item.xml"); + buildFromFile("panel_classifieds_list_item.xml"); LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this); LLAvatarPropertiesProcessor::getInstance()->sendClassifiedInfoRequest(getClassifiedId()); diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 5aed1e55e377889ab4d1ac7d1ef5d827359b5a43..f0e60386b6d92dfea17602e4bb8911c53f0c9a59 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -37,6 +37,7 @@ #include "llcombobox.h" #include "llfiltereditor.h" +#include "llfirstuse.h" #include "llfloaterreg.h" #include "llnotificationsutil.h" #include "lltabcontainer.h" @@ -246,7 +247,7 @@ LLPanelPlaces::LLPanelPlaces() LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback( boost::bind(&LLPanelPlaces::updateVerbs, this)); - //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() + //buildFromFile( "panel_places.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() } LLPanelPlaces::~LLPanelPlaces() @@ -321,8 +322,8 @@ BOOL LLPanelPlaces::postBuild() mFilterEditor->setCommitCallback(boost::bind(&LLPanelPlaces::onFilterEdit, this, _2, false)); } - mPlaceProfile = getChild<LLPanelPlaceProfile>("panel_place_profile"); - mLandmarkInfo = getChild<LLPanelLandmarkInfo>("panel_landmark_info"); + mPlaceProfile = findChild<LLPanelPlaceProfile>("panel_place_profile"); + mLandmarkInfo = findChild<LLPanelLandmarkInfo>("panel_landmark_info"); if (!mPlaceProfile || !mLandmarkInfo) return FALSE; @@ -346,6 +347,8 @@ BOOL LLPanelPlaces::postBuild() void LLPanelPlaces::onOpen(const LLSD& key) { + LLFirstUse::notUsingDestinationGuide(false); + if (!mPlaceProfile || !mLandmarkInfo) return; diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index f198a411a3dd4a220eadb03bf663ff81a81806fa..b04971f9803036c7c2c47f15e3e120b390181d4b 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -114,7 +114,7 @@ LLPanelPrimMediaControls::LLPanelPrimMediaControls() : mCommitCallbackRegistrar.add("MediaCtrl.SkipBack", boost::bind(&LLPanelPrimMediaControls::onClickSkipBack, this)); mCommitCallbackRegistrar.add("MediaCtrl.SkipForward", boost::bind(&LLPanelPrimMediaControls::onClickSkipForward, this)); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_prim_media_controls.xml"); + buildFromFile( "panel_prim_media_controls.xml"); mInactivityTimer.reset(); mFadeTimer.stop(); mCurrentZoom = ZOOM_NONE; @@ -1173,7 +1173,7 @@ void LLPanelPrimMediaControls::setCurrentURL() // if (media_address_combo && mCurrentURL != "about:blank") // { // media_address_combo->remove(mCurrentURL); -// media_address_combo->add(mCurrentURL, ADD_SORTED); +// media_address_combo->add(mCurrentURL); // media_address_combo->selectByValue(mCurrentURL); // } #else // USE_COMBO_BOX_FOR_MEDIA_URL diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 65b9e76a4e967dedc2efa695c0adb5a37208b636..4e6356397923769e39c426081cf770af2cf11f06 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -127,11 +127,11 @@ BOOL LLPanelProfile::postBuild() getTabCtrl()->setCommitCallback(boost::bind(&LLPanelProfile::onTabSelected, this, _2)); - LLPanelPicks* panel_picks = getChild<LLPanelPicks>(PANEL_PICKS); + LLPanelPicks* panel_picks = findChild<LLPanelPicks>(PANEL_PICKS); panel_picks->setProfilePanel(this); getTabContainer()[PANEL_PICKS] = panel_picks; - getTabContainer()[PANEL_PROFILE] = getChild<LLPanelAvatarProfile>(PANEL_PROFILE); + getTabContainer()[PANEL_PROFILE] = findChild<LLPanelAvatarProfile>(PANEL_PROFILE); return TRUE; } diff --git a/indra/newview/llpanelprofileview.cpp b/indra/newview/llpanelprofileview.cpp index c0f504fef66bf0be674c7eb5ec7205d73b25e7e1..dba047660da33d012a378fcb3d1aff68adf5ccf3 100644 --- a/indra/newview/llpanelprofileview.cpp +++ b/indra/newview/llpanelprofileview.cpp @@ -114,7 +114,7 @@ BOOL LLPanelProfileView::postBuild() { LLPanelProfile::postBuild(); - getTabContainer()[PANEL_NOTES] = getChild<LLPanelAvatarNotes>(PANEL_NOTES); + getTabContainer()[PANEL_NOTES] = findChild<LLPanelAvatarNotes>(PANEL_NOTES); //*TODO remove this, according to style guide we don't use status combobox getTabContainer()[PANEL_PROFILE]->getChildView("online_me_status_text")->setVisible( FALSE); diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index a7cbf5229080fc87f3bcfb471d6ac73393f64297..9b8167b15a687294698b3171d3573f7e2b29b3e1 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -126,7 +126,7 @@ LLTeleportHistoryFlatItem::LLTeleportHistoryFlatItem(S32 index, LLTeleportHistor mRegionName(region_name), mHighlight(hl) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_teleport_history_item.xml"); + buildFromFile( "panel_teleport_history_item.xml"); } LLTeleportHistoryFlatItem::~LLTeleportHistoryFlatItem() @@ -377,7 +377,7 @@ LLTeleportHistoryPanel::LLTeleportHistoryPanel() mLastSelectedFlatlList(NULL), mLastSelectedItemIndex(-1) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_teleport_history.xml"); + buildFromFile( "panel_teleport_history.xml"); } LLTeleportHistoryPanel::~LLTeleportHistoryPanel() diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 0d17fb3e82b2ad10bc38261323d18c68cdc52ca2..a9ca7314ce878429928420591a7e78b09993a0eb 100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -66,7 +66,7 @@ LLPanelTopInfoBar::LLPanelTopInfoBar(): mParcelChangedObserver(0) LLUICtrl::CommitCallbackRegistry::currentRegistrar() .add("TopInfoBar.Action", boost::bind(&LLPanelTopInfoBar::onContextMenuItemClicked, this, _2)); - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_topinfo_bar.xml"); + buildFromFile( "panel_topinfo_bar.xml"); } LLPanelTopInfoBar::~LLPanelTopInfoBar() diff --git a/indra/newview/llfloatervoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp similarity index 80% rename from indra/newview/llfloatervoicedevicesettings.cpp rename to indra/newview/llpanelvoicedevicesettings.cpp index 34277001ee64f063686a065d27d457d4d3bee5ed..aef870d3524923813410103e8b43cad1f3d040c4 100644 --- a/indra/newview/llfloatervoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -1,5 +1,5 @@ /** - * @file llfloatervoicedevicesettings.cpp + * @file llpanelvoicedevicesettings.cpp * @author Richard Nelson * @brief Voice communication set-up * @@ -27,13 +27,10 @@ #include "llviewerprecompiledheaders.h" -#include "llfloatervoicedevicesettings.h" +#include "llpanelvoicedevicesettings.h" // Viewer includes -#include "llbutton.h" #include "llcombobox.h" -#include "llfocusmgr.h" -#include "lliconctrl.h" #include "llsliderctrl.h" #include "llviewercontrol.h" #include "llvoiceclient.h" @@ -70,8 +67,10 @@ BOOL LLPanelVoiceDeviceSettings::postBuild() // set mic volume tuning slider based on last mic volume setting volume_slider->setValue(mMicVolume); - childSetCommitCallback("voice_input_device", onCommitInputDevice, this); - childSetCommitCallback("voice_output_device", onCommitOutputDevice, this); + getChild<LLComboBox>("voice_input_device")->setCommitCallback( + boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this)); + getChild<LLComboBox>("voice_output_device")->setCommitCallback( + boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this)); return TRUE; } @@ -303,91 +302,20 @@ void LLPanelVoiceDeviceSettings::cleanup() LLVoiceChannel::resume(); } -// static -void LLPanelVoiceDeviceSettings::onCommitInputDevice(LLUICtrl* ctrl, void* user_data) +void LLPanelVoiceDeviceSettings::onCommitInputDevice() { if(LLVoiceClient::getInstance()) { - LLVoiceClient::getInstance()->setCaptureDevice(ctrl->getValue().asString()); + LLVoiceClient::getInstance()->setCaptureDevice( + getChild<LLComboBox>("voice_input_device")->getValue().asString()); } } -// static -void LLPanelVoiceDeviceSettings::onCommitOutputDevice(LLUICtrl* ctrl, void* user_data) +void LLPanelVoiceDeviceSettings::onCommitOutputDevice() { if(LLVoiceClient::getInstance()) { - LLVoiceClient::getInstance()->setRenderDevice(ctrl->getValue().asString()); + LLVoiceClient::getInstance()->setRenderDevice( + getChild<LLComboBox>("voice_input_device")->getValue().asString()); } } - -// -// LLFloaterVoiceDeviceSettings -// - -LLFloaterVoiceDeviceSettings::LLFloaterVoiceDeviceSettings(const LLSD& seed) - : LLFloater(seed), - mDevicePanel(NULL) -{ - mFactoryMap["device_settings"] = LLCallbackMap(createPanelVoiceDeviceSettings, this); - // do not automatically open singleton floaters (as result of getInstance()) -// BOOL no_open = FALSE; -// Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_device_settings.xml", no_open); -} -BOOL LLFloaterVoiceDeviceSettings::postBuild() -{ - center(); - return TRUE; -} - -// virtual -void LLFloaterVoiceDeviceSettings::onOpen(const LLSD& key) -{ - if(mDevicePanel) - { - mDevicePanel->initialize(); - } -} - -// virtual -void LLFloaterVoiceDeviceSettings::onClose(bool app_settings) -{ - if(mDevicePanel) - { - mDevicePanel->apply(); - mDevicePanel->cleanup(); - } -} - -void LLFloaterVoiceDeviceSettings::apply() -{ - if (mDevicePanel) - { - mDevicePanel->apply(); - } -} - -void LLFloaterVoiceDeviceSettings::cancel() -{ - if (mDevicePanel) - { - mDevicePanel->cancel(); - } -} - -void LLFloaterVoiceDeviceSettings::draw() -{ - if (mDevicePanel) - { - mDevicePanel->refresh(); - } - LLFloater::draw(); -} - -// static -void* LLFloaterVoiceDeviceSettings::createPanelVoiceDeviceSettings(void* user_data) -{ - LLFloaterVoiceDeviceSettings* floaterp = (LLFloaterVoiceDeviceSettings*)user_data; - floaterp->mDevicePanel = new LLPanelVoiceDeviceSettings(); - return floaterp->mDevicePanel; -} diff --git a/indra/newview/llfloatervoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h similarity index 67% rename from indra/newview/llfloatervoicedevicesettings.h rename to indra/newview/llpanelvoicedevicesettings.h index 5f892972de4ca970fb414631dd9abac3dfcd5310..636b8b99481f9df8b25ed055a7da0fa62ab214dd 100644 --- a/indra/newview/llfloatervoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h @@ -25,10 +25,10 @@ * $/LicenseInfo$ */ -#ifndef LL_LLFLOATERVOICEDEVICESETTINGS_H -#define LL_LLFLOATERVOICEDEVICESETTINGS_H +#ifndef LL_LLPANELVOICEDEVICESETTINGS_H +#define LL_LLPANELVOICEDEVICESETTINGS_H -#include "llfloater.h" +#include "llpanel.h" class LLPanelVoiceDeviceSettings : public LLPanel { @@ -47,8 +47,8 @@ class LLPanelVoiceDeviceSettings : public LLPanel /*virtual*/ void handleVisibilityChange ( BOOL new_visibility ); protected: - static void onCommitInputDevice(LLUICtrl* ctrl, void* user_data); - static void onCommitOutputDevice(LLUICtrl* ctrl, void* user_data); + void onCommitInputDevice(); + void onCommitOutputDevice(); F32 mMicVolume; std::string mInputDevice; @@ -58,26 +58,4 @@ class LLPanelVoiceDeviceSettings : public LLPanel BOOL mDevicesUpdated; }; -class LLFloaterVoiceDeviceSettings : public LLFloater -{ - friend class LLFloaterReg; - -public: - - /*virtual*/ BOOL postBuild(); - /*virtual*/ void onOpen(const LLSD& key); - /*virtual*/ void onClose(bool app_settings); - /*virtual*/ void draw(); - void apply(); - void cancel(); -private: - LLFloaterVoiceDeviceSettings(const LLSD& seed); - -protected: - static void* createPanelVoiceDeviceSettings(void* user_data); - -protected: - LLPanelVoiceDeviceSettings* mDevicePanel; -}; - -#endif // LL_LLFLOATERVOICEDEVICESETTINGS_H +#endif // LL_LLPANELVOICEDEVICESETTINGS_H diff --git a/indra/newview/llpanelvolumepulldown.cpp b/indra/newview/llpanelvolumepulldown.cpp index f2772b5d8894e00af6fa39382305a47d10796e33..aea7b33d7f8f182ff254b74e4b59f14f04386f45 100644 --- a/indra/newview/llpanelvolumepulldown.cpp +++ b/indra/newview/llpanelvolumepulldown.cpp @@ -54,7 +54,7 @@ LLPanelVolumePulldown::LLPanelVolumePulldown() mCommitCallbackRegistrar.add("Vol.setControlFalse", boost::bind(&LLPanelVolumePulldown::setControlFalse, this, _2)); mCommitCallbackRegistrar.add("Vol.GoAudioPrefs", boost::bind(&LLPanelVolumePulldown::onAdvancedButtonClick, this, _2)); - LLUICtrlFactory::instance().buildPanel(this, "panel_volume_pulldown.xml"); + buildFromFile( "panel_volume_pulldown.xml"); } BOOL LLPanelVolumePulldown::postBuild() diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 29e262199e3fea24c028338b372f4b83610500bd..408270a1a042933cc56f5b5f81c043e39a2b558a 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -205,6 +205,24 @@ BOOL LLPlacesFolderView::handleRightMouseDown(S32 x, S32 y, MASK mask) return LLFolderView::handleRightMouseDown(x, y, mask); } +BOOL LLPlacesFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg) +{ + // Don't accept anything except landmarks and folders to be dropped + // in places folder view. See STORM-296. + if (cargo_type != DAD_LANDMARK && cargo_type != DAD_CATEGORY) + { + *accept = ACCEPT_NO; + return FALSE; + } + + return LLFolderView::handleDragAndDrop(x, y, mask, drop, cargo_type, cargo_data, + accept, tooltip_msg); +} + void LLPlacesFolderView::setupMenuHandle(LLInventoryType::EType asset_type, LLHandle<LLView> menu_handle) { mMenuHandlesByInventoryType[asset_type] = menu_handle; diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 6641871a0bfc279b86bd2c8ac637da4726805d27..a44776d18b9f19ff976118927698c704839376c7 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -70,6 +70,12 @@ class LLPlacesFolderView : public LLFolderView */ /*virtual*/ BOOL handleRightMouseDown( S32 x, S32 y, MASK mask ); + /*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, + EDragAndDropType cargo_type, + void* cargo_data, + EAcceptance* accept, + std::string& tooltip_msg); + void setupMenuHandle(LLInventoryType::EType asset_type, LLHandle<LLView> menu_handle); void setParentLandmarksPanel(LLLandmarksPanel* panel) diff --git a/indra/newview/llpreviewanim.cpp b/indra/newview/llpreviewanim.cpp index b328f65349ad2e8a635203b30dd120cca69b0942..8e8b530e1352c61ec084463ba6a10f2733b87e5d 100644 --- a/indra/newview/llpreviewanim.cpp +++ b/indra/newview/llpreviewanim.cpp @@ -43,7 +43,6 @@ extern LLAgent gAgent; LLPreviewAnim::LLPreviewAnim(const LLSD& key) : LLPreview( key ) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_preview_animation.xml", FALSE); } // static diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp index 3f4edbaf97d6e53eca83b45ee928b3e4846b1ccb..16284d1a7ecc30a8f989d300d4a06abdb67e225b 100644 --- a/indra/newview/llpreviewgesture.cpp +++ b/indra/newview/llpreviewgesture.cpp @@ -311,9 +311,6 @@ LLPreviewGesture::LLPreviewGesture(const LLSD& key) NONE_LABEL = LLTrans::getString("---"); SHIFT_LABEL = LLTrans::getString("KBShift"); CTRL_LABEL = LLTrans::getString("KBCtrl"); - - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_gesture.xml", FALSE); - } diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index e85a6a7094e0a614f8375faeaa917fc8d2b84069..9f3ee6ac5d21fbcd977800aa4158da9ead916597 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -71,7 +71,6 @@ LLPreviewNotecard::LLPreviewNotecard(const LLSD& key) //const LLUUID& item_id, { mAssetID = item->getAssetUUID(); } - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_preview_notecard.xml", FALSE); } LLPreviewNotecard::~LLPreviewNotecard() diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index d280cf162541e59728bef11446f246dae24f68a0..cf2ea3828808d0c4d53f5a1296386f1e62d12280 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -138,6 +138,9 @@ class LLFloaterScriptSearch : public LLFloater LLScriptEdCore* getEditorCore() { return mEditorCore; } static LLFloaterScriptSearch* getInstance() { return sInstance; } + virtual bool hasAccelerators() const; + virtual BOOL handleKeyHere(KEY key, MASK mask); + private: LLScriptEdCore* mEditorCore; @@ -151,7 +154,7 @@ LLFloaterScriptSearch::LLFloaterScriptSearch(LLScriptEdCore* editor_core) : LLFloater(LLSD()), mEditorCore(editor_core) { - LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_search.xml", NULL); + buildFromFile("floater_script_search.xml"); sInstance = this; @@ -242,7 +245,24 @@ void LLFloaterScriptSearch::handleBtnReplaceAll() mEditorCore->mEditor->replaceTextAll(getChild<LLUICtrl>("search_text")->getValue().asString(), getChild<LLUICtrl>("replace_text")->getValue().asString(), caseChk->get()); } +bool LLFloaterScriptSearch::hasAccelerators() const +{ + if (mEditorCore) + { + return mEditorCore->hasAccelerators(); + } + return FALSE; +} + +BOOL LLFloaterScriptSearch::handleKeyHere(KEY key, MASK mask) +{ + if (mEditorCore) + { + return mEditorCore->handleKeyHere(key, mask); + } + return FALSE; +} /// --------------------------------------------------------------------------- /// LLScriptEdCore @@ -654,7 +674,7 @@ void LLScriptEdCore::onBtnDynamicHelp() if (!live_help_floater) { live_help_floater = new LLFloater(LLSD()); - LLUICtrlFactory::getInstance()->buildFloater(live_help_floater, "floater_lsl_guide.xml", NULL); + live_help_floater->buildFromFile("floater_lsl_guide.xml", NULL); LLFloater* parent = dynamic_cast<LLFloater*>(getParent()); llassert(parent); if (parent) @@ -942,7 +962,6 @@ LLPreviewLSL::LLPreviewLSL(const LLSD& key ) mPendingUploads(0) { mFactoryMap["script panel"] = LLCallbackMap(LLPreviewLSL::createScriptEdPanel, this); - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_script_preview.xml", FALSE); } // virtual @@ -1417,7 +1436,6 @@ LLLiveLSLEditor::LLLiveLSLEditor(const LLSD& key) : mIsNew(false) { mFactoryMap["script ed panel"] = LLCallbackMap(LLLiveLSLEditor::createScriptEdPanel, this); - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_live_lsleditor.xml", FALSE); } BOOL LLLiveLSLEditor::postBuild() diff --git a/indra/newview/llpreviewscript.h b/indra/newview/llpreviewscript.h index ef4f0d9c2041913270b1eaf03143233052b9f5c4..f4b31e5962f5a4b5926c661ec058f7829ad70855 100644 --- a/indra/newview/llpreviewscript.h +++ b/indra/newview/llpreviewscript.h @@ -87,6 +87,8 @@ class LLScriptEdCore : public LLPanel static void onBtnInsertSample(void*); static void onBtnInsertFunction(LLUICtrl*, void*); + virtual bool hasAccelerators() const { return true; } + private: void onBtnHelp(); void onBtnDynamicHelp(); diff --git a/indra/newview/llpreviewsound.cpp b/indra/newview/llpreviewsound.cpp index 6b53b459901847d7d86efe8389a3416d9ce8aa7f..33d2d015ad2c45fce515be71c3bf2e76226ccf80 100644 --- a/indra/newview/llpreviewsound.cpp +++ b/indra/newview/llpreviewsound.cpp @@ -45,7 +45,6 @@ const F32 SOUND_GAIN = 1.0f; LLPreviewSound::LLPreviewSound(const LLSD& key) : LLPreview( key ) { - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this,"floater_preview_sound.xml", FALSE); } // virtual diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 1155f35de857956f8022c42b69631778e3c80653..fd6b326ef16fa7df9bb17e1f6480585e145bca8d 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -77,7 +77,6 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key) { mPreviewToSave = TRUE; } - //Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_texture.xml", FALSE); } LLPreviewTexture::~LLPreviewTexture() diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index cde99f8d7cf3e7d30295e4993536bcc07999b746..e9504cbba07670402edec02e2c6af85741b6e625 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -41,6 +41,7 @@ #include "llagent.h" #include "llbutton.h" #include "llfocusmgr.h" +#include "llnotifications.h" #include "llprogressbar.h" #include "llstartup.h" #include "llviewercontrol.h" @@ -90,6 +91,8 @@ BOOL LLProgressView::postBuild() // hidden initially, until we need it LLPanel::setVisible(FALSE); + LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLProgressView::onAlertModal, this, _1)); + sInstance = this; return TRUE; } @@ -128,15 +131,10 @@ void LLProgressView::setVisible(BOOL visible) if (getVisible() && !visible) { mFadeTimer.start(); - // hiding progress view, so show menu bars - LLUI::getRootView()->getChildView("menu_bar_holder")->setVisible(TRUE); } // showing progress view else if (!getVisible() && visible) { - // showing progress view, so hide menu bars - LLUI::getRootView()->getChildView("menu_bar_holder")->setVisible(FALSE); - setFocus(TRUE); mFadeTimer.stop(); mProgressTimer.start(); @@ -294,3 +292,18 @@ bool LLProgressView::handleUpdate(const LLSD& event_data) } return false; } + +bool LLProgressView::onAlertModal(const LLSD& notify) +{ + // if the progress view is visible, it will obscure the notification window + // in this case, we want to auto-accept WebLaunchExternalTarget notifications + if (isInVisibleChain() && notify["sigtype"].asString() == "add") + { + LLNotificationPtr notifyp = LLNotifications::instance().find(notify["id"].asUUID()); + if (notifyp && notifyp->getName() == "WebLaunchExternalTarget") + { + notifyp->respondWithDefault(); + } + } + return false; +} diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h index 01d5e16534955a872d92e094a781103da12eb417..be1744f08a57e81b7e2834b231291a02e27aba83 100644 --- a/indra/newview/llprogressview.h +++ b/indra/newview/llprogressview.h @@ -59,6 +59,7 @@ class LLProgressView : public LLPanel static void onCancelButtonClicked( void* ); static void onClickMessage(void*); + bool onAlertModal(const LLSD& sd); protected: LLProgressBar* mProgressBar; diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index 2d8c9b0feceb2d026606c4725896bdb76a48c853..05b273cd29c4f14b45bb731f6824442f075e8b1d 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -56,7 +56,7 @@ LLScrollingPanelParam::LLScrollingPanelParam( const LLPanel::Params& panel_param mAllowModify(allow_modify), mWearable(wearable) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_scrolling_param.xml"); + buildFromFile( "panel_scrolling_param.xml"); // *HACK To avoid hard coding texture position, lets use border's position for texture. LLViewBorder* left_border = getChild<LLViewBorder>("left_border"); diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index fb60b1ece712631c611a52cc535c7a6afdb9e336..da891d1c51526a8fa1bfd68178289db8d3d70029 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -181,6 +181,7 @@ template class LLSelectMgr* LLSingleton<class LLSelectMgr>::getInstance(); //----------------------------------------------------------------------------- LLSelectMgr::LLSelectMgr() : mHideSelectedObjects(LLCachedControl<bool>(gSavedSettings, "HideSelectedObjects", FALSE)), + mRenderHighlightSelections(LLCachedControl<bool>(gSavedSettings, "RenderHighlightSelections", TRUE)), mAllowSelectAvatar( LLCachedControl<bool>(gSavedSettings, "AllowSelectAvatar", FALSE)), mDebugSelectMgr(LLCachedControl<bool>(gSavedSettings, "DebugSelectMgr", FALSE)) { @@ -4898,7 +4899,7 @@ void LLSelectMgr::updateSelectionSilhouette(LLObjectSelectionHandle object_handl } void LLSelectMgr::renderSilhouettes(BOOL for_hud) { - if (!mRenderSilhouettes) + if (!mRenderSilhouettes || !mRenderHighlightSelections) { return; } @@ -5058,23 +5059,13 @@ LLSelectNode::LLSelectNode(LLViewerObject* object, BOOL glow) mSilhouetteExists(FALSE), mDuplicated(FALSE), mTESelectMask(0), - mLastTESelected(0) + mLastTESelected(0), + mName(LLStringUtil::null), + mDescription(LLStringUtil::null), + mTouchName(LLStringUtil::null), + mSitName(LLStringUtil::null), + mCreationDate(0) { - mObject = object; - selectAllTEs(FALSE); - mIndividualSelection = FALSE; - mTransient = FALSE; - mValid = FALSE; - mPermissions = new LLPermissions(); - mInventorySerial = 0; - mName = LLStringUtil::null; - mDescription = LLStringUtil::null; - mTouchName = LLStringUtil::null; - mSitName = LLStringUtil::null; - mSilhouetteExists = FALSE; - mDuplicated = FALSE; - mCreationDate = 0; - saveColors(); } diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index e6db264377b16f57eeb277df9f214e0320277b9f..7478ed5f9a3db2d1ff850a048c2f7c632e9d8d17 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -347,6 +347,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr> static LLColor4 sContextSilhouetteColor; LLCachedControl<bool> mHideSelectedObjects; + LLCachedControl<bool> mRenderHighlightSelections; LLCachedControl<bool> mAllowSelectAvatar; LLCachedControl<bool> mDebugSelectMgr; diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp index a3c6a7b6f187bf718d9e9bfd132ba59a945573ec..1999f148280dbf2efd96a413f833e26f5f9ee824 100644 --- a/indra/newview/llsidepanelappearance.cpp +++ b/indra/newview/llsidepanelappearance.cpp @@ -182,6 +182,11 @@ void LLSidepanelAppearance::onOpen(const LLSD& key) } void LLSidepanelAppearance::onVisibilityChange(const LLSD &new_visibility) +{ + updateToVisibility(new_visibility); +} + +void LLSidepanelAppearance::updateToVisibility(const LLSD &new_visibility) { if (new_visibility.asBoolean()) { diff --git a/indra/newview/llsidepanelappearance.h b/indra/newview/llsidepanelappearance.h index f28cdfa49a2564a2b383b2bd5e8c85e8059c0a5b..2a83dfbc9d1eb5a4bd3a4cb2d66cc7a43b8abb36 100644 --- a/indra/newview/llsidepanelappearance.h +++ b/indra/newview/llsidepanelappearance.h @@ -63,6 +63,7 @@ class LLSidepanelAppearance : public LLPanel void setWearablesLoading(bool val); void showDefaultSubpart(); void updateScrollingPanelList(); + void updateToVisibility( const LLSD& new_visibility ); private: void onFilterEdit(const std::string& search_string); diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index b4c1516f71bc630f0e000989a42dfb2c2262f015..31ea542743db43c87dd5b52cfe715a37fc318e44 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -31,6 +31,7 @@ #include "llappearancemgr.h" #include "llavataractions.h" #include "llbutton.h" +#include "llfirstuse.h" #include "llinventorybridge.h" #include "llinventoryfunctions.h" #include "llinventorypanel.h" @@ -50,7 +51,7 @@ LLSidepanelInventory::LLSidepanelInventory() mPanelMainInventory(NULL) { - //LLUICtrlFactory::getInstance()->buildPanel(this, "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() + //buildFromFile( "panel_inventory.xml"); // Called from LLRegisterPanelClass::defaultPanelClassBuilder() } LLSidepanelInventory::~LLSidepanelInventory() @@ -84,7 +85,7 @@ BOOL LLSidepanelInventory::postBuild() mOverflowBtn = mInventoryPanel->getChild<LLButton>("overflow_btn"); mOverflowBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onOverflowButtonClicked, this)); - mPanelMainInventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + mPanelMainInventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); mPanelMainInventory->setSelectCallback(boost::bind(&LLSidepanelInventory::onSelectionChange, this, _1, _2)); LLTabContainer* tabs = mPanelMainInventory->getChild<LLTabContainer>("inventory filter tabs"); tabs->setCommitCallback(boost::bind(&LLSidepanelInventory::updateVerbs, this)); @@ -102,7 +103,7 @@ BOOL LLSidepanelInventory::postBuild() // UI elements from item panel { - mItemPanel = getChild<LLSidepanelItemInfo>("sidepanel__item_panel"); + mItemPanel = findChild<LLSidepanelItemInfo>("sidepanel__item_panel"); LLButton* back_btn = mItemPanel->getChild<LLButton>("back_btn"); back_btn->setClickedCallback(boost::bind(&LLSidepanelInventory::onBackButtonClicked, this)); @@ -110,7 +111,7 @@ BOOL LLSidepanelInventory::postBuild() // UI elements from task panel { - mTaskPanel = getChild<LLSidepanelTaskInfo>("sidepanel__task_panel"); + mTaskPanel = findChild<LLSidepanelTaskInfo>("sidepanel__task_panel"); if (mTaskPanel) { LLButton* back_btn = mTaskPanel->getChild<LLButton>("back_btn"); @@ -123,6 +124,8 @@ BOOL LLSidepanelInventory::postBuild() void LLSidepanelInventory::onOpen(const LLSD& key) { + LLFirstUse::newInventory(false); + if(key.size() == 0) return; @@ -168,7 +171,7 @@ void LLSidepanelInventory::onShopButtonClicked() void LLSidepanelInventory::performActionOnSelection(const std::string &action) { - LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + LLPanelMainInventory *panel_main_inventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem(); if (!current_item) { @@ -179,8 +182,26 @@ void LLSidepanelInventory::performActionOnSelection(const std::string &action) void LLSidepanelInventory::onWearButtonClicked() { - performActionOnSelection("wear"); - performActionOnSelection("attach"); + LLPanelMainInventory *panel_main_inventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); + if (!panel_main_inventory) + { + llassert(panel_main_inventory != NULL); + return; + } + + // Get selected items set. + const std::set<LLUUID> selected_uuids_set = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList(); + if (selected_uuids_set.empty()) return; // nothing selected + + // Convert the set to a vector. + uuid_vec_t selected_uuids_vec; + for (std::set<LLUUID>::const_iterator it = selected_uuids_set.begin(); it != selected_uuids_set.end(); ++it) + { + selected_uuids_vec.push_back(*it); + } + + // Wear all selected items. + wear_multiple(selected_uuids_vec, true); } void LLSidepanelInventory::onPlayButtonClicked() @@ -283,7 +304,7 @@ void LLSidepanelInventory::updateVerbs() case LLInventoryType::IT_OBJECT: case LLInventoryType::IT_ATTACHMENT: mWearBtn->setVisible(TRUE); - mWearBtn->setEnabled(get_can_item_be_worn(item->getLinkedUUID())); + mWearBtn->setEnabled(canWearSelected()); mShopBtn->setVisible(FALSE); break; case LLInventoryType::IT_SOUND: @@ -306,25 +327,46 @@ void LLSidepanelInventory::updateVerbs() bool LLSidepanelInventory::canShare() { LLPanelMainInventory* panel_main_inventory = - mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); - LLFolderView* root_folder = - panel_main_inventory->getActivePanel()->getRootFolder(); + if (!panel_main_inventory) + { + llwarns << "Failed to get the main inventory panel" << llendl; + return false; + } - LLFolderViewItem* current_item = root_folder->hasVisibleChildren() - ? root_folder->getCurSelectedItem() - : NULL; + LLInventoryPanel* active_panel = panel_main_inventory->getActivePanel(); + // Avoid flicker in the Recent tab while inventory is being loaded. + if (!active_panel->getRootFolder()->hasVisibleChildren()) return false; - LLInvFVBridge* bridge = current_item - ? dynamic_cast <LLInvFVBridge*> (current_item->getListener()) - : NULL; + return LLAvatarActions::canShareSelectedItems(active_panel); +} + +bool LLSidepanelInventory::canWearSelected() +{ + LLPanelMainInventory* panel_main_inventory = + mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); + + if (!panel_main_inventory) + { + llassert(panel_main_inventory != NULL); + return false; + } + + std::set<LLUUID> selected_uuids = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList(); + for (std::set<LLUUID>::const_iterator it = selected_uuids.begin(); + it != selected_uuids.end(); + ++it) + { + if (!get_can_item_be_worn(*it)) return false; + } - return bridge ? bridge->canShare() : false; + return true; } LLInventoryItem *LLSidepanelInventory::getSelectedItem() { - LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + LLPanelMainInventory *panel_main_inventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); LLFolderViewItem* current_item = panel_main_inventory->getActivePanel()->getRootFolder()->getCurSelectedItem(); if (!current_item) { @@ -337,7 +379,7 @@ LLInventoryItem *LLSidepanelInventory::getSelectedItem() U32 LLSidepanelInventory::getSelectedCount() { - LLPanelMainInventory *panel_main_inventory = mInventoryPanel->getChild<LLPanelMainInventory>("panel_main_inventory"); + LLPanelMainInventory *panel_main_inventory = mInventoryPanel->findChild<LLPanelMainInventory>("panel_main_inventory"); std::set<LLUUID> selection_list = panel_main_inventory->getActivePanel()->getRootFolder()->getSelectionList(); return selection_list.size(); } diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index 4776dd753032804879c26c799b63535ed7f03916..32c98bc034b71b479b8c0fb3348d1d7bea06f16d 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -65,6 +65,8 @@ class LLSidepanelInventory : public LLPanel void performActionOnSelection(const std::string &action); void updateVerbs(); + bool canWearSelected(); // check whether selected items can be worn + // // UI Elements // diff --git a/indra/newview/llsidepaneliteminfo.cpp b/indra/newview/llsidepaneliteminfo.cpp index e41bbe43df82675cb2939ba0deef8ae4a160ee61..b053432f9c696ed08e1aa454a051a9ed9fefe3ec 100644 --- a/indra/newview/llsidepaneliteminfo.cpp +++ b/indra/newview/llsidepaneliteminfo.cpp @@ -122,8 +122,6 @@ LLSidepanelItemInfo::LLSidepanelItemInfo() , mObjectInventoryObserver(NULL) { mPropertiesObserver = new LLItemPropertiesObserver(this); - - //LLUICtrlFactory::getInstance()->buildFloater(this,"floater_inventory_item_properties.xml"); } // Destroys the object diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp index 9ee504cc4c2e6e0b56bb790b1dd7ce4b253abe9a..81b2fc0ae09a9fd9ceb870400f67fe1b089dec9e 100644 --- a/indra/newview/llsidetray.cpp +++ b/indra/newview/llsidetray.cpp @@ -32,6 +32,8 @@ #include "llappviewer.h" #include "llbottomtray.h" #include "llfloaterreg.h" +#include "llfirstuse.h" +#include "llhints.h" #include "llsidetray.h" #include "llviewerwindow.h" #include "llaccordionctrl.h" @@ -49,6 +51,8 @@ #include "llwindow.h"//for SetCursor #include "lltransientfloatermgr.h" +#include "llsidepanelappearance.h" + //#include "llscrollcontainer.h" using namespace std; @@ -57,6 +61,8 @@ using namespace LLNotificationsUI; static LLRootViewRegistry::Register<LLSideTray> t1("side_tray"); static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab"); +static const S32 BOTTOM_BAR_PAD = 5; + static const std::string COLLAPSED_NAME = "<<"; static const std::string EXPANDED_NAME = ">>"; @@ -111,7 +117,7 @@ class LLSideTrayTab: public LLPanel }; protected: LLSideTrayTab(const Params& params); - + void dock(); void undock(LLFloater* floater_tab); @@ -132,7 +138,7 @@ class LLSideTrayTab: public LLPanel const std::string& getTabTitle() const { return mTabTitle;} void onOpen (const LLSD& key); - + void toggleTabDocked(); LLPanel *getPanel(); @@ -288,6 +294,13 @@ void LLSideTrayTab::dock() } } +static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized) +{ + if (!panel) return; + bool visible = !minimized.asBoolean(); + panel->updateToVisibility(LLSD(visible)); +} + void LLSideTrayTab::undock(LLFloater* floater_tab) { LLSideTray* side_tray = getSideTray(); @@ -316,6 +329,9 @@ void LLSideTrayTab::undock(LLFloater* floater_tab) floater_tab->setTitle(mTabTitle); floater_tab->setName(getName()); + // Resize handles get obscured by added panel so move them to front. + floater_tab->moveResizeHandlesToFront(); + // Reshape the floater if needed. LLRect floater_rect; if (floater_tab->hasSavedRect()) @@ -327,13 +343,18 @@ void LLSideTrayTab::undock(LLFloater* floater_tab) { // Detaching for the first time. Reshape the floater. floater_rect = side_tray->getLocalRect(); + + // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar. + floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD; + floater_rect.makeValid(); floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight()); } // Reshape the panel. { - LLRect panel_rect = floater_rect; + LLRect panel_rect = floater_tab->getLocalRect(); panel_rect.mTop -= floater_tab->getHeaderHeight(); + panel_rect.makeValid(); setRect(panel_rect); reshape(panel_rect.getWidth(), panel_rect.getHeight()); } @@ -341,6 +362,17 @@ void LLSideTrayTab::undock(LLFloater* floater_tab) // Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing. setFollowsAll(); + // Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater, + // so setting callback here. + if (getName() == "sidebar_appearance") + { + LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel()); + if(panel_appearance) + { + floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2)); + } + } + if (!side_tray->getCollapsed()) { side_tray->collapseSideBar(); @@ -568,7 +600,7 @@ void LLSideTray::toggleTabButton(LLSideTrayTab* tab) { LLButton* btn = it->second; bool new_state = !btn->getToggleState(); - btn->setToggleState(new_state); + btn->setToggleState(new_state); // Only highlight the tab if side tray is expanded (STORM-157). btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage ); } @@ -646,7 +678,7 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible { // Keep previously active tab visible if requested. if (keep_prev_visible) tab_to_keep_visible = mActiveTab; - toggleTabButton(mActiveTab); + toggleTabButton(mActiveTab); } //select new tab @@ -654,9 +686,9 @@ bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible if (mActiveTab) { - toggleTabButton(mActiveTab); - LLSD key;//empty - mActiveTab->onOpen(key); + toggleTabButton(mActiveTab); + LLSD key;//empty + mActiveTab->onOpen(key); } //arrange(); @@ -868,6 +900,7 @@ void LLSideTray::createButtons () { mCollapseButton = createButton(name,sidebar_tab->mImage,sidebar_tab->getTabTitle(), boost::bind(&LLSideTray::onToggleCollapse, this)); + LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle()); } else { @@ -876,6 +909,8 @@ void LLSideTray::createButtons () mTabButtons[name] = button; } } + LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle()); + LLHints::registerHintTarget("dest_guide_btn", mTabButtons["sidebar_places"]->getHandle()); } void LLSideTray::processTriState () @@ -914,6 +949,7 @@ void LLSideTray::onTabButtonClick(string name) void LLSideTray::onToggleCollapse() { + LLFirstUse::notUsingSidePanel(false); if(mCollapsed) { expandSideBar(); @@ -1118,11 +1154,11 @@ LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& para { LLPanel* panel = openChildPanel(*child_it, panel_name, params); if (panel) return panel; - } + } // Look up the tab in the list of attached tabs. for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it) - { + { LLPanel* panel = openChildPanel(*child_it, panel_name, params); if (panel) return panel; } diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 4e79007c13d624454348e43d3f8394664a5154ba..4c23a1920b1e2f27ad7282db7ab71ffdf048c60f 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -109,6 +109,22 @@ class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray> LLPanel* getPanel (const std::string& panel_name); LLPanel* getActivePanel (); bool isPanelActive (const std::string& panel_name); + + /* + * get the panel of given type T (don't show it or do anything else with it) + */ + template <typename T> + T* getPanel(const std::string& panel_name) + { + T* panel = dynamic_cast<T*>(getPanel(panel_name)); + if (!panel) + { + llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl; + return NULL; + } + return panel; + } + /* * get currently active tab */ diff --git a/indra/newview/llsplitbutton.cpp b/indra/newview/llsplitbutton.cpp index 7db42214e1218f9c65d7c9a861fc931c3dfb8702..790305103d522162217faaee38530d40029b0b0f 100644 --- a/indra/newview/llsplitbutton.cpp +++ b/indra/newview/llsplitbutton.cpp @@ -220,7 +220,7 @@ LLSplitButton::LLSplitButton(const LLSplitButton::Params& p) addChild(mItemsPanel); - LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items().begin(); + LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items.begin(); //processing shown item button mShownItem = prepareItemButton(*it); @@ -231,7 +231,7 @@ LLSplitButton::LLSplitButton(const LLSplitButton::Params& p) //processing hidden item buttons S32 item_top = mItemsPanel->getRect().getHeight(); - for (++it; it != p.items().end(); ++it) + for (++it; it != p.items.end(); ++it) { LLButton* hidden_button = prepareItemButton(*it); hidden_button->setRect(LLRect(btn_left, item_top, btn_right, item_top - rc.getHeight())); diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 975d1f9f32cf77eebfca8057baf5fde16890fdff..c56cacd12ba6c71139f15b2e522e4b554e3cdb28 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -794,10 +794,6 @@ bool idle_startup() if (STATE_LOGIN_CLEANUP == LLStartUp::getStartupState()) { - // Move the progress view in front of the UI immediately when login is performed - // this allows not to see main menu after Alt+Tab was pressed while login. EXT-744. - gViewerWindow->moveProgressViewToFront(); - //reset the values that could have come in from a slurl // DEV-42215: Make sure they're not empty -- gUserCredential // might already have been set from gSavedSettings, and it's too bad @@ -1251,9 +1247,6 @@ bool idle_startup() if (!gNoRender) { - // Move the progress view in front of the UI - gViewerWindow->moveProgressViewToFront(); - // direct logging to the debug console's line buffer LLError::logToFixedBuffer(gDebugView->mDebugConsolep); diff --git a/indra/newview/llstatusbar.cpp b/indra/newview/llstatusbar.cpp index b622e9897126979517a9da81c10e96d9ecde42f7..e9fc25404a56cce34049a97b6a918d95fbec8442 100644 --- a/indra/newview/llstatusbar.cpp +++ b/indra/newview/llstatusbar.cpp @@ -33,6 +33,7 @@ #include "llagentcamera.h" #include "llbutton.h" #include "llcommandhandler.h" +#include "llfirstuse.h" #include "llviewercontrol.h" #include "llfloaterbuycurrency.h" #include "llbuycurrencyhtml.h" @@ -41,6 +42,7 @@ #include "llpanelvolumepulldown.h" #include "llfloaterregioninfo.h" #include "llfloaterscriptdebug.h" +#include "llhints.h" #include "llhudicon.h" #include "llnavigationbar.h" #include "llkeyboard.h" @@ -107,10 +109,6 @@ const S32 TEXT_HEIGHT = 18; static void onClickVolume(void*); -std::vector<std::string> LLStatusBar::sDays; -std::vector<std::string> LLStatusBar::sMonths; -const U32 LLStatusBar::MAX_DATE_STRING_LENGTH = 2000; - LLStatusBar::LLStatusBar(const LLRect& rect) : LLPanel(), mTextTime(NULL), @@ -127,14 +125,10 @@ LLStatusBar::LLStatusBar(const LLRect& rect) // status bar can possible overlay menus? setMouseOpaque(FALSE); - // size of day of the weeks and year - sDays.reserve(7); - sMonths.reserve(12); - mBalanceTimer = new LLFrameTimer(); mHealthTimer = new LLFrameTimer(); - LLUICtrlFactory::getInstance()->buildPanel(this,"panel_status_bar.xml"); + buildFromFile("panel_status_bar.xml"); } LLStatusBar::~LLStatusBar() @@ -169,9 +163,6 @@ BOOL LLStatusBar::postBuild() { gMenuBarView->setRightMouseDownCallback(boost::bind(&show_navbar_context_menu, _1, _2, _3)); - // build date necessary data (must do after panel built) - setupDate(); - mTextTime = getChild<LLTextBox>("TimeText" ); getChild<LLUICtrl>("buyL")->setCommitCallback( @@ -185,6 +176,8 @@ BOOL LLStatusBar::postBuild() mMediaToggle->setClickedCallback( &LLStatusBar::onClickMediaToggle, this ); mMediaToggle->setMouseEnterCallback(boost::bind(&LLStatusBar::onMouseEnterNearbyMedia, this)); + LLHints::registerHintTarget("linden_balance", getChild<LLView>("balance_bg")->getHandle()); + gSavedSettings.getControl("MuteAudio")->getSignal()->connect(boost::bind(&LLStatusBar::onVolumeChanged, this, _2)); // Adding Net Stat Graph @@ -224,8 +217,6 @@ BOOL LLStatusBar::postBuild() mSGPacketLoss->mPerSec = FALSE; addChild(mSGPacketLoss); - getChild<LLTextBox>("stat_btn")->setClickedCallback(onClickStatGraph); - mPanelVolumePulldown = new LLPanelVolumePulldown(); addChild(mPanelVolumePulldown); mPanelVolumePulldown->setFollows(FOLLOWS_TOP|FOLLOWS_RIGHT); @@ -332,6 +323,11 @@ void LLStatusBar::creditBalance(S32 credit) void LLStatusBar::setBalance(S32 balance) { + if (balance > getBalance() && getBalance() != 0) + { + LLFirstUse::receiveLindens(); + } + std::string money_str = LLResMgr::getInstance()->getMonetaryString( balance ); LLTextBox* balance_box = getChild<LLTextBox>("balance"); @@ -454,6 +450,7 @@ void LLStatusBar::onClickBuyCurrency() // open a currency floater - actual one open depends on // value specified in settings.xml LLBuyCurrencyHTML::openCurrencyFloater(); + LLFirstUse::receiveLindens(false); } void LLStatusBar::onMouseEnterVolume() @@ -517,75 +514,6 @@ void LLStatusBar::onClickMediaToggle(void* data) LLViewerMedia::setAllMediaEnabled(enable); } -// sets the static variables necessary for the date -void LLStatusBar::setupDate() -{ - // fill the day array with what's in the xui - std::string day_list = getString("StatBarDaysOfWeek"); - size_t length = day_list.size(); - - // quick input check - if(length < MAX_DATE_STRING_LENGTH) - { - // tokenize it and put it in the array - std::string cur_word; - for(size_t i = 0; i < length; ++i) - { - if(day_list[i] == ':') - { - sDays.push_back(cur_word); - cur_word.clear(); - } - else - { - cur_word.append(1, day_list[i]); - } - } - sDays.push_back(cur_word); - } - - // fill the day array with what's in the xui - std::string month_list = getString( "StatBarMonthsOfYear" ); - length = month_list.size(); - - // quick input check - if(length < MAX_DATE_STRING_LENGTH) - { - // tokenize it and put it in the array - std::string cur_word; - for(size_t i = 0; i < length; ++i) - { - if(month_list[i] == ':') - { - sMonths.push_back(cur_word); - cur_word.clear(); - } - else - { - cur_word.append(1, month_list[i]); - } - } - sMonths.push_back(cur_word); - } - - // make sure we have at least 7 days and 12 months - if(sDays.size() < 7) - { - sDays.resize(7); - } - - if(sMonths.size() < 12) - { - sMonths.resize(12); - } -} - -// static -void LLStatusBar::onClickStatGraph(void* data) -{ - LLFloaterReg::showInstance("lagmeter"); -} - BOOL can_afford_transaction(S32 cost) { return((cost <= 0)||((gStatusBar) && (gStatusBar->getBalance() >=cost))); diff --git a/indra/newview/llstatusbar.h b/indra/newview/llstatusbar.h index c8c86dfd8c74fd1bfe6328fed80e2243f904e7b6..2388aeb0c85e74c9f0b2fb25947a5a8e195e150c 100644 --- a/indra/newview/llstatusbar.h +++ b/indra/newview/llstatusbar.h @@ -85,16 +85,13 @@ class LLStatusBar LLPanelNearByMedia* getNearbyMediaPanel() { return mPanelNearByMedia; } private: - // simple method to setup the part that holds the date - void setupDate(); - + void onClickBuyCurrency(); void onVolumeChanged(const LLSD& newvalue); void onMouseEnterVolume(); void onMouseEnterNearbyMedia(); void onClickScreen(S32 x, S32 y); - static void onClickStatGraph(void* data); static void onClickMediaToggle(void* data); @@ -117,9 +114,6 @@ class LLStatusBar LLFrameTimer* mHealthTimer; LLPanelVolumePulldown* mPanelVolumePulldown; LLPanelNearByMedia* mPanelNearByMedia; - static std::vector<std::string> sDays; - static std::vector<std::string> sMonths; - static const U32 MAX_DATE_STRING_LENGTH; }; // *HACK: Status bar owns your cached money balance. JC diff --git a/indra/newview/llsyswellitem.cpp b/indra/newview/llsyswellitem.cpp index 4a107fefa8c4bcfba3235ae359bbb86f548061bd..057d80457c65278d89d5914d5765d77af20b1e4f 100644 --- a/indra/newview/llsyswellitem.cpp +++ b/indra/newview/llsyswellitem.cpp @@ -38,7 +38,7 @@ LLSysWellItem::LLSysWellItem(const Params& p) : LLPanel(p), mTitle(NULL), mCloseBtn(NULL) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_sys_well_item.xml"); + buildFromFile( "panel_sys_well_item.xml"); mTitle = getChild<LLTextBox>("title"); mCloseBtn = getChild<LLButton>("close_btn"); diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 750fbe54a725573949dcb62fb01e56f4e399a5ab..99342bb564c0e0ab0a33bb7823450cfaec0c5598 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -249,7 +249,7 @@ LLIMWellWindow::RowPanel::RowPanel(const LLSysWellWindow* parent, const LLUUID& S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId) : LLPanel(LLPanel::Params()), mChiclet(NULL), mParent(parent) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_activeim_row.xml", NULL); + buildFromFile( "panel_activeim_row.xml", NULL); // Choose which of the pre-created chiclets (IM/group) to use. // The other one gets hidden. @@ -346,7 +346,7 @@ LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& notification_id, bo : LLPanel() , mChiclet(NULL) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_active_object_row.xml", NULL); + buildFromFile( "panel_active_object_row.xml", NULL); initChiclet(notification_id); diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 1625b4bafd475582045d358676e75d779c59f0cf..328298bda43999c6e9418759072871df88a17327 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -196,8 +196,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( mContextConeOpacity(0.f), mSelectedItemPinned( FALSE ) { + buildFromFile("floater_texture_ctrl.xml"); mCanApplyImmediately = can_apply_immediately; - LLUICtrlFactory::getInstance()->buildFloater(this,"floater_texture_ctrl.xml",NULL); setCanMinimize(FALSE); } diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index 0440bef793a4a77080883e2bc3d017cb2b5ad175..b2c2aab388b62d7b6d216319ec37b4ae66a34e08 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -847,10 +847,16 @@ bool LLTextureFetchWorker::doWork(S32 param) if(mCanUseHTTP) { //NOTE: - //it seems ok to let sim control the UDP traffic - //so there is no throttle for http here. + //control the number of the http requests issued for: + //1, not openning too many file descriptors at the same time; + //2, control the traffic of http so udp gets bandwidth. // - + static const S32 MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE = 32 ; + if(mFetcher->getNumHTTPRequests() > MAX_NUM_OF_HTTP_REQUESTS_IN_QUEUE) + { + return false ; //wait. + } + mFetcher->removeFromNetworkQueue(this, false); S32 cur_size = 0; diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 749cf2c948e184dab17d1cec618ec961fd40b1ca..a9ab98da5fb0b04c3aa29e43f2618d7bfd4fcbea 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -77,7 +77,7 @@ LLToast::LLToast(const LLToast::Params& p) { mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs)); - LLUICtrlFactory::getInstance()->buildFloater(this, "panel_toast.xml", NULL); + buildFromFile("panel_toast.xml", NULL); setCanDrag(FALSE); diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index b22f3b9d093d8bfc783f578e1586a0ce27a17ae4..0a96c092a0de0e54d5fc6be1a08bb14ab20548a9 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -188,6 +188,8 @@ class LLToast : public LLModalDialog virtual S32 notifyParent(const LLSD& info); + LLHandle<LLToast> getHandle() { mHandle.bind(this); return mHandle; } + private: void onToastMouseEnter(); @@ -200,6 +202,8 @@ class LLToast : public LLModalDialog LLUUID mSessionID; LLNotificationPtr mNotification; + LLRootHandle<LLToast> mHandle; + LLPanel* mWrapperPanel; // timer counts a lifetime of a toast diff --git a/indra/newview/lltoastgroupnotifypanel.cpp b/indra/newview/lltoastgroupnotifypanel.cpp index 4c75b07ae8e0de920ac3ca4fb56d573af2e7557f..78cc96b353eb0025f1c094dccad5dbb45846a563 100644 --- a/indra/newview/lltoastgroupnotifypanel.cpp +++ b/indra/newview/lltoastgroupnotifypanel.cpp @@ -54,7 +54,7 @@ LLToastGroupNotifyPanel::LLToastGroupNotifyPanel(LLNotificationPtr& notification : LLToastPanel(notification), mInventoryOffer(NULL) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_group_notify.xml"); + buildFromFile( "panel_group_notify.xml"); const LLSD& payload = notification->getPayload(); LLGroupData groupData; if (!gAgent.getGroupData(payload["group_id"].asUUID(),groupData)) diff --git a/indra/newview/lltoastimpanel.cpp b/indra/newview/lltoastimpanel.cpp index 82ccca433026f930da8565589b08976be3e8d71e..1d8b82ec1bc0c994b9557aaab2af05d0475db39f 100644 --- a/indra/newview/lltoastimpanel.cpp +++ b/indra/newview/lltoastimpanel.cpp @@ -45,7 +45,7 @@ LLToastIMPanel::LLToastIMPanel(LLToastIMPanel::Params &p) : LLToastPanel(p.notif mAvatarIcon(NULL), mAvatarName(NULL), mTime(NULL), mMessage(NULL), mGroupIcon(NULL) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_instant_message.xml"); + buildFromFile( "panel_instant_message.xml"); mGroupIcon = getChild<LLGroupIconCtrl>("group_icon"); mAvatarIcon = getChild<LLAvatarIconCtrl>("avatar_icon"); diff --git a/indra/newview/lltoastnotifypanel.cpp b/indra/newview/lltoastnotifypanel.cpp index 1a1c94674b60937c5ceaa4c3104e96a1dc640304..9017f5ec5574e175e0f07295a15ae28695fd2bfc 100644 --- a/indra/newview/lltoastnotifypanel.cpp +++ b/indra/newview/lltoastnotifypanel.cpp @@ -61,7 +61,7 @@ mNumButtons(0), mAddedDefaultBtn(false), mCloseNotificationOnDestroy(true) { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_notification.xml"); + buildFromFile( "panel_notification.xml"); if(rect != LLRect::null) { this->setShape(rect); diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index 54484a1dbb523821d12699e07a1fc2d47a5b1ad8..6bb95168e264135ca54d1e0a1b5d571e04467b72 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1445,6 +1445,43 @@ static void give_inventory_cb(const LLSD& notification, const LLSD& response) } } +static void show_item_sharing_confirmation(const std::string name, + LLViewerInventoryItem* inv_item, + const LLSD& dest, + const LLUUID& dest_agent, + const LLUUID& session_id = LLUUID::null) +{ + if (!inv_item) + { + llassert(NULL != inv_item); + return; + } + + LLSD substitutions; + substitutions["RESIDENTS"] = name; + substitutions["ITEMS"] = inv_item->getName(); + LLSD payload; + payload["agent_id"] = dest_agent; + payload["item_id"] = inv_item->getUUID(); + payload["session_id"] = session_id; + payload["d&d_dest"] = dest.asString(); + LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, payload, &give_inventory_cb); +} + +static void get_name_cb(const LLUUID& id, + const std::string& first_name, + const std::string& last_name, + LLViewerInventoryItem* inv_item, + const LLSD& dest, + const LLUUID& dest_agent) +{ + show_item_sharing_confirmation(first_name + " " + last_name, + inv_item, + dest, + id, + LLUUID::null); +} + // function used as drag-and-drop handler for simple agent give inventory requests //static bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_id, BOOL drop, @@ -1477,20 +1514,28 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_ if (drop) { LLIMModel::LLIMSession * session = LLIMModel::instance().findIMSession(session_id); + + // If no IM session found get the destination agent's name by id. if (NULL == session) { - llassert(NULL != session); - return false; + std::string fullname; + + // If destination agent's name is found in cash proceed to showing the confirmation dialog. + // Otherwise set up a callback to show the dialog when the name arrives. + if (gCacheName->getFullName(dest_agent, fullname)) + { + show_item_sharing_confirmation(fullname, inv_item, dest, dest_agent, LLUUID::null); + } + else + { + gCacheName->get(dest_agent, FALSE, boost::bind(&get_name_cb, _1, _2, _3, inv_item, dest, dest_agent)); + } + + return true; } - LLSD substitutions; - substitutions["RESIDENTS"] = session->mName; - substitutions["ITEMS"] = inv_item->getName(); - LLSD payload; - payload["agent_id"] = dest_agent; - payload["item_id"] = inv_item->getUUID(); - payload["session_id"] = session_id; - payload["d&d_dest"] = dest.asString(); - LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, payload, &give_inventory_cb); + + // If an IM session with destination agent is found item offer will be logged in this session. + show_item_sharing_confirmation(session->mName, inv_item, dest, dest_agent, session_id); } } else diff --git a/indra/newview/llvieweraudio.cpp b/indra/newview/llvieweraudio.cpp index 750bb224b1ddf05add1a3021fcd871afaa6159bd..b19c738ed2fbe2dab4e1abb4b302e47d3e239d46 100644 --- a/indra/newview/llvieweraudio.cpp +++ b/indra/newview/llvieweraudio.cpp @@ -114,10 +114,6 @@ void audio_update_volume(bool force_update) gAudiop->setDopplerFactor(gSavedSettings.getF32("AudioLevelDoppler")); gAudiop->setRolloffFactor(gSavedSettings.getF32("AudioLevelRolloff")); -#ifdef kAUDIO_ENABLE_WIND - gAudiop->enableWind(!mute_audio); -#endif - gAudiop->setMuted(mute_audio); if (force_update) diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index b6f2d34663ba1ab5b600c45750718b8e502750b6..7490ccf77a655e97ca9b8ed1c504e1cc54db510e 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -95,7 +95,6 @@ #include "llfloatertos.h" #include "llfloatertopobjects.h" #include "llfloateruipreview.h" -#include "llfloatervoicedevicesettings.h" #include "llfloatervoiceeffect.h" #include "llfloaterwater.h" #include "llfloaterwhitelistentry.h" @@ -202,7 +201,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("prefs_hardware_settings", "floater_hardware_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHardwareSettings>); LLFloaterReg::add("perm_prefs", "floater_perm_prefs.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPerms>); 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("preview_anim", "floater_preview_animation.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewAnim>, "preview"); LLFloaterReg::add("preview_gesture", "floater_preview_gesture.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewGesture>, "preview"); LLFloaterReg::add("preview_notecard", "floater_preview_notecard.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLPreviewNotecard>, "preview"); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 283669aaef52c1557585af027b5fe8e841bcd1ef..48ab122edffe7c8d6314066a622212a92ac4c6a3 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -51,6 +51,7 @@ #include "llvoavatarself.h" #include "llviewerregion.h" #include "llwebsharing.h" // For LLWebSharing::setOpenIDCookie(), *TODO: find a better way to do this! +#include "llfilepicker.h" #include "llevent.h" // LLSimpleListener #include "llnotificationsutil.h" @@ -60,6 +61,8 @@ //#include "llfirstuse.h" #include "llwindow.h" +#include "llfloatermediabrowser.h" // for handling window close requests and geometry change requests in media browser windows. + #include <boost/bind.hpp> // for SkinFolder listener #include <boost/signals2.hpp> @@ -1365,6 +1368,38 @@ void LLViewerMedia::openIDCookieResponse(const std::string &cookie) setOpenIDCookie(); } +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::proxyWindowOpened(const std::string &target, const std::string &uuid) +{ + if(uuid.empty()) + return; + + for (impl_list::iterator iter = sViewerMediaImplList.begin(); iter != sViewerMediaImplList.end(); iter++) + { + if((*iter)->mMediaSource && (*iter)->mMediaSource->pluginSupportsMediaBrowser()) + { + (*iter)->mMediaSource->proxyWindowOpened(target, uuid); + } + } +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::proxyWindowClosed(const std::string &uuid) +{ + if(uuid.empty()) + return; + + for (impl_list::iterator iter = sViewerMediaImplList.begin(); iter != sViewerMediaImplList.end(); iter++) + { + if((*iter)->mMediaSource && (*iter)->mMediaSource->pluginSupportsMediaBrowser()) + { + (*iter)->mMediaSource->proxyWindowClosed(uuid); + } + } +} + bool LLViewerMedia::hasInWorldMedia() { if (sInWorldMediaDisabled) return false; @@ -1598,7 +1633,7 @@ void LLViewerMediaImpl::setMediaType(const std::string& media_type) ////////////////////////////////////////////////////////////////////////////////////////// /*static*/ -LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height) +LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target) { std::string plugin_basename = LLMIMETypes::implType(media_type); @@ -1654,7 +1689,9 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_ // collect 'javascript enabled' setting from prefs and send to embedded browser bool javascript_enabled = gSavedSettings.getBOOL( "BrowserJavascriptEnabled" ); media_source->setJavascriptEnabled( javascript_enabled ); - + + media_source->setTarget(target); + if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins"))) { return media_source; @@ -1705,7 +1742,7 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) // Save the MIME type that really caused the plugin to load mCurrentMimeType = mMimeType; - LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight); + LLPluginClassMedia* media_source = newSourceFromMediaType(mMimeType, this, mMediaWidth, mMediaHeight, mTarget); if (media_source) { @@ -2805,6 +2842,7 @@ bool LLViewerMediaImpl::isPlayable() const ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginClassMediaOwner::EMediaEvent event) { + bool pass_through = true; switch(event) { case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: @@ -2818,28 +2856,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla case MEDIA_EVENT_CLICK_LINK_HREF: { LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, target is \"" << plugin->getClickTarget() << "\", uri is " << plugin->getClickURL() << LL_ENDL; - // retrieve the event parameters - std::string url = plugin->getClickURL(); - U32 target_type = plugin->getClickTargetType(); - - switch (target_type) - { - case LLPluginClassMedia::TARGET_EXTERNAL: - // force url to external browser - LLWeb::loadURLExternal(url); - break; - case LLPluginClassMedia::TARGET_BLANK: - // open in SL media browser or external browser based on user pref - LLWeb::loadURL(url); - break; - case LLPluginClassMedia::TARGET_NONE: - // ignore this click and let media plugin handle it - break; - case LLPluginClassMedia::TARGET_OTHER: - LL_WARNS("LinkTarget") << "Unsupported link target type" << LL_ENDL; - break; - default: break; - } }; break; case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH: @@ -2971,13 +2987,70 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla } break; + case LLViewerMediaObserver::MEDIA_EVENT_PICK_FILE_REQUEST: + { + // Display a file picker + std::string response; + + LLFilePicker& picker = LLFilePicker::instance(); + if (!picker.getOpenFile(LLFilePicker::FFLOAD_ALL)) + { + // The user didn't pick a file -- the empty response string will indicate this. + } + + response = picker.getFirstFile(); + + plugin->sendPickFileResponse(response); + } + break; + case LLViewerMediaObserver::MEDIA_EVENT_CLOSE_REQUEST: + { + std::string uuid = plugin->getClickUUID(); + + llinfos << "MEDIA_EVENT_CLOSE_REQUEST for uuid " << uuid << llendl; + + if(uuid.empty()) + { + // This close request is directed at this instance, let it fall through. + } + else + { + // This close request is directed at another instance + pass_through = false; + LLFloaterMediaBrowser::closeRequest(uuid); + } + } + break; + + case LLViewerMediaObserver::MEDIA_EVENT_GEOMETRY_CHANGE: + { + std::string uuid = plugin->getClickUUID(); + + llinfos << "MEDIA_EVENT_GEOMETRY_CHANGE for uuid " << uuid << llendl; + + if(uuid.empty()) + { + // This geometry change request is directed at this instance, let it fall through. + } + else + { + // This request is directed at another instance + pass_through = false; + LLFloaterMediaBrowser::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight()); + } + } + break; + default: break; } - // Just chain the event to observers. - emitEvent(plugin, event); + if(pass_through) + { + // Just chain the event to observers. + emitEvent(plugin, event); + } } //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index e0cc26fa295f7dbf54f94ee033ed6e1673f84133..4025a4484ff0437edb7d708893b8fb1e93c3f772 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -152,6 +152,9 @@ class LLViewerMedia static void openIDSetup(const std::string &openid_url, const std::string &openid_token); static void openIDCookieResponse(const std::string &cookie); + static void proxyWindowOpened(const std::string &target, const std::string &uuid); + static void proxyWindowClosed(const std::string &uuid); + private: static void setOpenIDCookie(); static void onTeleportFinished(); @@ -271,8 +274,10 @@ class LLViewerMediaImpl ECursorType getLastSetCursor() { return mLastSetCursor; } + void setTarget(const std::string& target) { mTarget = target; } + // utility function to create a ready-to-use media instance from a desired media type. - static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height); + static LLPluginClassMedia* newSourceFromMediaType(std::string media_type, LLPluginClassMediaOwner *owner /* may be NULL */, S32 default_width, S32 default_height, const std::string target = LLStringUtil::null); // Internally set our desired browser user agent string, including // the Second Life version and skin name. Used because we can @@ -438,6 +443,7 @@ class LLViewerMediaImpl bool mNavigateSuspended; bool mNavigateSuspendedDeferred; bool mTrustedBrowser; + std::string mTarget; private: BOOL mIsUpdated ; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index f62223a38dfa060c700dd5afad7aaa6c2ac5daea..d4af5048c3461c0ac26aaf876ec90388da69f074 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -62,6 +62,7 @@ #include "lllandmarkactions.h" #include "llgroupmgr.h" #include "lltooltip.h" +#include "llhints.h" #include "llhudeffecttrail.h" #include "llhudmanager.h" #include "llimview.h" @@ -7272,7 +7273,7 @@ void handle_load_from_xml(void*) { std::string filename = picker.getFirstFile(); LLFloater* floater = new LLFloater(LLSD()); - LLUICtrlFactory::getInstance()->buildFloater(floater, filename, NULL); + floater->buildFromFile(filename); } } @@ -7750,6 +7751,18 @@ class LLUploadCostCalculator : public view_listener_t } }; +class LLToggleUIHints : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + bool ui_hints_enabled = gSavedSettings.getBOOL("EnableUIHints"); + // toggle + ui_hints_enabled = !ui_hints_enabled; + gSavedSettings.setBOOL("EnableUIHints", ui_hints_enabled); + return true; + } +}; + void LLUploadCostCalculator::calculateCost() { S32 upload_cost = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); @@ -8230,4 +8243,5 @@ void initialize_menus() view_listener_t::addMenu(new LLEditableSelected(), "EditableSelected"); view_listener_t::addMenu(new LLEditableSelectedMono(), "EditableSelectedMono"); + view_listener_t::addMenu(new LLToggleUIHints(), "ToggleUIHints"); } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index c35173a7d41c197be55c27c54f3e11180cd342bf..26b7e0fb6de18a7ec8cc010818107d8fe806ae3c 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -50,6 +50,7 @@ #include "llagentcamera.h" #include "llcallingcard.h" #include "llbuycurrencyhtml.h" +#include "llfirstuse.h" #include "llfloaterbuyland.h" #include "llfloaterland.h" #include "llfloaterregioninfo.h" @@ -932,6 +933,15 @@ class LLOpenTaskGroupOffer : public LLInventoryAddedObserver //one global instance to bind them LLOpenTaskOffer* gNewInventoryObserver=NULL; +class LLNewInventoryHintObserver : public LLInventoryAddedObserver +{ +protected: + /*virtual*/ void done() + { + LLFirstUse::newInventory(); + } +}; + void start_new_inventory_observer() { if (!gNewInventoryObserver) //task offer observer @@ -947,6 +957,8 @@ void start_new_inventory_observer() gInventoryMoveObserver = new LLViewerInventoryMoveFromWorldObserver; gInventory.addObserver(gInventoryMoveObserver); } + + gInventory.addObserver(new LLNewInventoryHintObserver()); } class LLDiscardAgentOffer : public LLInventoryFetchItemsObserver @@ -1873,6 +1885,8 @@ void inventory_offer_handler(LLOfferInfo* info) LLPostponedNotification::add<LLPostponedOfferNotification>(p, info->mFromID, false); } } + + LLFirstUse::newInventory(); } bool lure_callback(const LLSD& notification, const LLSD& response) @@ -4213,14 +4227,12 @@ void process_preload_sound(LLMessageSystem *msg, void **user_data) // Don't play sounds from a region with maturity above current agent maturity LLVector3d pos_global = objectp->getPositionGlobal(); - if( !gAgent.canAccessMaturityAtGlobal( pos_global ) ) + if (gAgent.canAccessMaturityAtGlobal(pos_global)) { - return; - } - // Add audioData starts a transfer internally. sourcep->addAudioData(datap, FALSE); } +} void process_attached_sound(LLMessageSystem *msg, void **user_data) { @@ -6441,7 +6453,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**) LLPanelLandCovenant::updateEstateOwnerName(owner_name); LLFloaterBuyLand::updateEstateOwnerName(owner_name); - LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile"); + LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile"); if (panel) { panel->updateEstateName(estate_name); @@ -6575,7 +6587,7 @@ void onCovenantLoadComplete(LLVFS *vfs, LLPanelLandCovenant::updateCovenantText(covenant_text); LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid); - LLPanelPlaceProfile* panel = LLSideTray::getInstance()->findChild<LLPanelPlaceProfile>("panel_place_profile"); + LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile"); if (panel) { panel->updateCovenantText(covenant_text); diff --git a/indra/newview/llviewernetwork.cpp b/indra/newview/llviewernetwork.cpp index 7f7c24571729686171a15dcc100df3ef68e3424e..b91e407c6dc36734b5696082f5028921936cb4ad 100644 --- a/indra/newview/llviewernetwork.cpp +++ b/indra/newview/llviewernetwork.cpp @@ -304,7 +304,12 @@ void LLGridManager::initialize(const std::string& grid_file) addGrid(grid); } - gSavedSettings.getControl("CurrentGrid")->getSignal()->connect(boost::bind(&LLGridManager::updateIsInProductionGrid, this)); + LLControlVariablePtr grid_control = gSavedSettings.getControl("CurrentGrid"); + if (grid_control.notNull()) + { + grid_control->getSignal()->connect(boost::bind(&LLGridManager::updateIsInProductionGrid, this)); + } + // since above only triggers on changes, trigger the callback manually to initialize state updateIsInProductionGrid(); @@ -499,7 +504,8 @@ void LLGridManager::setGridChoice(const std::string& grid) addGrid(grid_data); } mGrid = grid; - gSavedSettings.setString("CurrentGrid", grid); + gSavedSettings.setString("CurrentGrid", grid); + updateIsInProductionGrid(); } std::string LLGridManager::getGridByLabel( const std::string &grid_label, bool case_sensitive) diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 25cc24da95c36f85c0dc0d15cd4d03d2b01e1971..fd3e80d7559a704bb373085a3e2e7f2678df9671 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1844,7 +1844,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys, if (cdp) { F32 ping_delay = 0.5f * mTimeDilation * ( ((F32)cdp->getPingDelay()) * 0.001f + gFrameDTClamped); - LLVector3 diff = getVelocity() * (0.5f*mTimeDilation*(gFrameDTClamped + ((F32)ping_delay)*0.001f)); + LLVector3 diff = getVelocity() * ping_delay; new_pos_parent += diff; } else @@ -4445,6 +4445,13 @@ void LLViewerObject::setAttachedSound(const LLUUID &audio_uuid, const LLUUID& ow mAudioSourcep = NULL; } + if (mAudioSourcep && mAudioSourcep->isMuted() && + mAudioSourcep->getCurrentData() && mAudioSourcep->getCurrentData()->getID() == audio_uuid) + { + //llinfos << "Already having this sound as muted sound, ignoring" << llendl; + return; + } + getAudioSource(owner_id); if (mAudioSourcep) diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index e9a4c4dd0a7a786110c53518646adeb55e8de386..99e869dafc153ad29347b5dbfbdde184920b1987 100644 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -568,6 +568,24 @@ void LLViewerParcelMedia::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_NAME_CHANGED" << LL_ENDL; }; break; + + case MEDIA_EVENT_CLOSE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_CLOSE_REQUEST" << LL_ENDL; + } + break; + + case MEDIA_EVENT_PICK_FILE_REQUEST: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << LL_ENDL; + } + break; + + case MEDIA_EVENT_GEOMETRY_CHANGE: + { + LL_DEBUGS("Media") << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE, uuid is " << self->getClickUUID() << LL_ENDL; + } + break; }; } diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 99a9469ddb044135ce837dc49805d6c61fe1b49d..537ed7f9634bd4c771506b8cb7fcc76b0d7643cb 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1825,7 +1825,7 @@ bool LLViewerFetchedTexture::updateFetch() S32 current_discard = getCurrentDiscardLevelForFetching() ; S32 desired_discard = getDesiredDiscardLevel(); F32 decode_priority = getDecodePriority(); - decode_priority = llmax(decode_priority, 0.0f); + decode_priority = llclamp(decode_priority, 0.0f, maxDecodePriority()); if (mIsFetching) { diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 456516ab6bbf1bab27b82c82b835c6745368b3e4..bbf7c8e60e9c29ecb6e3d0a230227ad4269f4c73 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1544,7 +1544,8 @@ bool LLUIImageList::initFromFile() } UIImageDeclarations images; - LLXUIParser::instance().readXUI(root, images, base_file_path); + LLXUIParser parser; + parser.readXUI(root, images, base_file_path); if (!images.validateBlock()) return false; @@ -1557,8 +1558,8 @@ bool LLUIImageList::initFromFile() for (S32 cur_pass = PASS_DECODE_NOW; cur_pass < NUM_PASSES; cur_pass++) { - for (LLInitParam::ParamIterator<UIImageDeclaration>::const_iterator image_it = images.textures().begin(); - image_it != images.textures().end(); + for (LLInitParam::ParamIterator<UIImageDeclaration>::const_iterator image_it = images.textures.begin(); + image_it != images.textures.end(); ++image_it) { std::string file_name = image_it->file_name.isProvided() ? image_it->file_name() : image_it->name(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index 43d18c6d838e91faa3e4c638fe40898ecd39c5d8..983a2d25c810b65494fc3759eec73fdbc2320232 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -96,6 +96,7 @@ #include "llface.h" #include "llfeaturemanager.h" #include "llfilepicker.h" +#include "llfirstuse.h" #include "llfloater.h" #include "llfloaterbuildoptions.h" #include "llfloaterbuyland.h" @@ -1515,7 +1516,7 @@ void LLViewerWindow::initBase() // (But wait to add it as a child of the root view so that it will be in front of the // other views.) MainPanel* main_view = new MainPanel(); - LLUICtrlFactory::instance().buildPanel(main_view, "main_view.xml"); + main_view->buildFromFile("main_view.xml"); main_view->setShape(full_window); getRootView()->addChild(main_view); @@ -1523,7 +1524,8 @@ void LLViewerWindow::initBase() mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle(); mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle(); mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle(); - mPopupView = main_view->getChild<LLPopupView>("popup_holder"); + mPopupView = main_view->findChild<LLPopupView>("popup_holder"); + mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle(); // Constrain floaters to inside the menu and status bar regions. gFloaterView = main_view->getChild<LLFloaterView>("Floater View"); @@ -1561,7 +1563,7 @@ void LLViewerWindow::initBase() LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLFloaterPreference::initBusyResponse)); // Add the progress bar view (startup view), which overrides everything - mProgressView = getRootView()->getChild<LLProgressView>("progress_view"); + mProgressView = getRootView()->findChild<LLProgressView>("progress_view"); setShowProgress(FALSE); setProgressCancelButtonVisible(FALSE); @@ -2134,10 +2136,20 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) return TRUE; } + LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); + // give menus a chance to handle modified (Ctrl, Alt) shortcut keys before current focus // as long as focus isn't locked if (mask & (MASK_CONTROL | MASK_ALT) && !gFocusMgr.focusLocked()) { + // Check the current floater's menu first, if it has one. + if (gFocusMgr.keyboardFocusHasAccelerators() + && keyboard_focus + && keyboard_focus->handleKey(key,mask,FALSE)) + { + return TRUE; + } + if ((gMenuBarView && gMenuBarView->handleAcceleratorKey(key, mask)) ||(gLoginMenuBarView && gLoginMenuBarView->handleAcceleratorKey(key, mask))) { @@ -2173,7 +2185,6 @@ BOOL LLViewerWindow::handleKey(KEY key, MASK mask) } // Traverses up the hierarchy - LLFocusableElement* keyboard_focus = gFocusMgr.getKeyboardFocus(); if( keyboard_focus ) { LLLineEditor* chat_editor = LLBottomTray::instanceExists() ? LLBottomTray::getInstance()->getNearbyChatBar()->getChatBox() : NULL; @@ -2391,7 +2402,7 @@ void append_xui_tooltip(LLView* viewp, LLToolTip::Params& params) { if (viewp) { - if (!params.styled_message().empty()) + if (!params.styled_message.empty()) { params.styled_message.add().text("\n---------\n"); } @@ -2426,6 +2437,18 @@ void LLViewerWindow::updateUI() static std::string last_handle_msg; + if (gLoggedInTime.getStarted()) + { + if (gLoggedInTime.getElapsedTimeF32() > gSavedSettings.getF32("DestinationGuideHintTimeout")) + { + LLFirstUse::notUsingDestinationGuide(); + } + if (gLoggedInTime.getElapsedTimeF32() > gSavedSettings.getF32("SidePanelHintTimeout")) + { + LLFirstUse::notUsingSidePanel(); + } + } + LLConsole::updateClass(); // animate layout stacks so we have up to date rect for world view @@ -2486,6 +2509,17 @@ void LLViewerWindow::updateUI() // only update mouse hover set when UI is visible (since we shouldn't send hover events to invisible UI if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) { + // include all ancestors of captor_view as automatically having mouse + if (captor_view) + { + LLView* captor_parent_view = captor_view->getParent(); + while(captor_parent_view) + { + mouse_hover_set.insert(captor_parent_view->getHandle()); + captor_parent_view = captor_parent_view->getParent(); + } + } + // aggregate visible views that contain mouse cursor in display order LLPopupView::popup_list_t popups = mPopupView->getCurrentPopups(); @@ -3913,7 +3947,7 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei } if(image_buffer_x > 0 && image_buffer_y > 0) { - raw->resize(image_buffer_x, image_buffer_y, 3); + raw->resize(image_buffer_x, image_buffer_y, 3); } else { @@ -4247,14 +4281,6 @@ BOOL LLViewerWindow::getShowProgress() const return (mProgressView && mProgressView->getVisible()); } -void LLViewerWindow::moveProgressViewToFront() -{ - if( mProgressView && mRootView ) - { - mRootView->sendChildToFront(mProgressView); - } -} - void LLViewerWindow::setProgressString(const std::string& string) { if (mProgressView) diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h index 21507699b0981a65e6d3fe9711e956654da3f3eb..633c3a41d2a27098da98ac0d50f78496e3957943 100644 --- a/indra/newview/llviewerwindow.h +++ b/indra/newview/llviewerwindow.h @@ -271,7 +271,6 @@ class LLViewerWindow : public LLWindowCallbacks void setShowProgress(const BOOL show); BOOL getShowProgress() const; - void moveProgressViewToFront(); void setProgressString(const std::string& string); void setProgressPercent(const F32 percent); void setProgressMessage(const std::string& msg); @@ -288,6 +287,7 @@ class LLViewerWindow : public LLWindowCallbacks void updateWorldViewRect(bool use_full_window=false); LLView* getNonSideTrayView() { return mNonSideTrayView.get(); } LLView* getFloaterViewHolder() { return mFloaterViewHolder.get(); } + LLView* getHintHolder() { return mHintHolder.get(); } BOOL handleKey(KEY key, MASK mask); void handleScrollWheel (S32 clicks); @@ -447,6 +447,7 @@ class LLViewerWindow : public LLWindowCallbacks LLHandle<LLView> mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world LLHandle<LLView> mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray LLHandle<LLView> mFloaterViewHolder; // container for floater_view + LLHandle<LLView> mHintHolder; // container for hints LLPopupView* mPopupView; // container for transient popups class LLDebugText* mDebugText; // Internal class for debug text diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index 46d8f65d23d97220a94d1b8b90522dbc0696ec8f..c31714de5af8590336378381613e59fa69c66cbe 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -6089,9 +6089,9 @@ void LLVOAvatar::updateMeshTextures() // use the last-known good baked texture until it finish the first // render of the new layerset. - const BOOL layerset_invalid = !mBakedTextureDatas[i].mTexLayerSet - || !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized() - || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable(); + const BOOL layerset_invalid = mBakedTextureDatas[i].mTexLayerSet + && ( !mBakedTextureDatas[i].mTexLayerSet->getComposite()->isInitialized() + || !mBakedTextureDatas[i].mTexLayerSet->isLocalTextureDataAvailable() ); use_lkg_baked_layer[i] = (!is_layer_baked[i] && (mBakedTextureDatas[i].mLastTextureIndex != IMG_DEFAULT_AVATAR) diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index ec5c95469e76f0266a7f51ad0ff0c24231a528a9..e5cbf6568276d91795f003cd7fd8231bdcc17a87 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -43,7 +43,6 @@ #include "llhudeffecttrail.h" #include "llhudmanager.h" #include "llinventoryfunctions.h" -#include "llmenugl.h" #include "llnotificationsutil.h" #include "llselectmgr.h" #include "lltoolgrab.h" // for needsRenderBeam @@ -241,58 +240,58 @@ BOOL LLVOAvatarSelf::buildMenus() gAttachBodyPartPieMenus[0] = NULL; LLContextMenu::Params params; - params.label(LLTrans::getString("BodyPartsRightArm") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsRightArm")); params.name(params.label); params.visible(false); gAttachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsHead") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsHead")); params.name(params.label); gAttachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsLeftArm") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsLeftArm")); params.name(params.label); gAttachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); gAttachBodyPartPieMenus[4] = NULL; - params.label(LLTrans::getString("BodyPartsLeftLeg") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsLeftLeg")); params.name(params.label); gAttachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsTorso") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsTorso")); params.name(params.label); gAttachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsRightLeg") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsRightLeg")); params.name(params.label); gAttachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); gDetachBodyPartPieMenus[0] = NULL; - params.label(LLTrans::getString("BodyPartsRightArm") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsRightArm")); params.name(params.label); gDetachBodyPartPieMenus[1] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsHead") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsHead")); params.name(params.label); gDetachBodyPartPieMenus[2] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsLeftArm") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsLeftArm")); params.name(params.label); gDetachBodyPartPieMenus[3] = LLUICtrlFactory::create<LLContextMenu> (params); gDetachBodyPartPieMenus[4] = NULL; - params.label(LLTrans::getString("BodyPartsLeftLeg") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsLeftLeg")); params.name(params.label); gDetachBodyPartPieMenus[5] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsTorso") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsTorso")); params.name(params.label); gDetachBodyPartPieMenus[6] = LLUICtrlFactory::create<LLContextMenu> (params); - params.label(LLTrans::getString("BodyPartsRightLeg") + " " + LLMenuGL::BRANCH_SUFFIX); + params.label(LLTrans::getString("BodyPartsRightLeg")); params.name(params.label); gDetachBodyPartPieMenus[7] = LLUICtrlFactory::create<LLContextMenu> (params); diff --git a/indra/newview/llvocache.cpp b/indra/newview/llvocache.cpp index 0b903e62b1381484bea8eff1e71dc8b4d3da4ad3..8bdb8e069e231a8e0856e7388b401cf4ff60e0f0 100644 --- a/indra/newview/llvocache.cpp +++ b/indra/newview/llvocache.cpp @@ -44,25 +44,27 @@ BOOL check_write(LLAPRFile* apr_file, void* src, S32 n_bytes) //--------------------------------------------------------------------------- LLVOCacheEntry::LLVOCacheEntry(U32 local_id, U32 crc, LLDataPackerBinaryBuffer &dp) + : + mLocalID(local_id), + mCRC(crc), + mHitCount(0), + mDupeCount(0), + mCRCChangeCount(0) { - mLocalID = local_id; - mCRC = crc; - mHitCount = 0; - mDupeCount = 0; - mCRCChangeCount = 0; mBuffer = new U8[dp.getBufferSize()]; mDP.assignBuffer(mBuffer, dp.getBufferSize()); mDP = dp; } LLVOCacheEntry::LLVOCacheEntry() + : + mLocalID(0), + mCRC(0), + mHitCount(0), + mDupeCount(0), + mCRCChangeCount(0), + mBuffer(NULL) { - mLocalID = 0; - mCRC = 0; - mHitCount = 0; - mDupeCount = 0; - mCRCChangeCount = 0; - mBuffer = NULL; mDP.assignBuffer(mBuffer, 0); } @@ -73,7 +75,7 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) success = check_read(apr_file, &mLocalID, sizeof(U32)); if(success) -{ + { success = check_read(apr_file, &mCRC, sizeof(U32)); } if(success) @@ -83,27 +85,24 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) if(success) { success = check_read(apr_file, &mDupeCount, sizeof(S32)); -} + } if(success) -{ + { success = check_read(apr_file, &mCRCChangeCount, sizeof(S32)); } if(success) { success = check_read(apr_file, &size, sizeof(S32)); - // Corruption in the cache entries - if ((size > 10000) || (size < 1)) - { - // We've got a bogus size, skip reading it. - // We won't bother seeking, because the rest of this file - // is likely bogus, and will be tossed anyway. - llwarns << "Bogus cache entry, size " << size << ", aborting!" << llendl; - mLocalID = 0; - mCRC = 0; - mBuffer = NULL; - return; - } + // Corruption in the cache entries + if ((size > 10000) || (size < 1)) + { + // We've got a bogus size, skip reading it. + // We won't bother seeking, because the rest of this file + // is likely bogus, and will be tossed anyway. + llwarns << "Bogus cache entry, size " << size << ", aborting!" << llendl; + success = FALSE; + } } if(success && size > 0) { @@ -112,8 +111,8 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) if(success) { - mDP.assignBuffer(mBuffer, size); -} + mDP.assignBuffer(mBuffer, size); + } else { delete[] mBuffer ; @@ -125,6 +124,9 @@ LLVOCacheEntry::LLVOCacheEntry(LLAPRFile* apr_file) { mLocalID = 0; mCRC = 0; + mHitCount = 0; + mDupeCount = 0; + mCRCChangeCount = 0; mBuffer = NULL; } } @@ -257,7 +259,8 @@ void LLVOCache::destroyClass() LLVOCache::LLVOCache(): mInitialized(FALSE), mReadOnly(TRUE), - mNumEntries(0) + mNumEntries(0), + mCacheSize(1) { mLocalAPRFilePoolp = new LLVolatileAPRPool() ; } @@ -289,8 +292,8 @@ void LLVOCache::initCache(ELLPath location, U32 size, U32 cache_version) { LLFile::mkdir(mObjectCacheDirName); } - mCacheSize = llmin(size, MAX_NUM_OBJECT_ENTRIES) ; - mCacheSize = llmax(mCacheSize, NUM_ENTRIES_TO_PURGE); + mCacheSize = llclamp(size, + MAX_NUM_OBJECT_ENTRIES, NUM_ENTRIES_TO_PURGE); mMetaInfo.mVersion = cache_version; readCacheHeader(); diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 9e3d61ae441a3f6c33c01eda3e1694f62676fbff..b692093fb9bf8afe2964678210b306d8d7252e41 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -497,14 +497,28 @@ void LLVoiceChannelGroup::activate() 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); + LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(mSessionID); + // Adding ad-hoc call participants to Recent People List. + // If it's an outgoing ad-hoc, we can use mInitialTargetIDs that holds IDs of people we + // called(both online and offline) as source to get people for recent (STORM-210). + if (session->isOutgoingAdHoc()) + { + for (uuid_vec_t::iterator it = session->mInitialTargetIDs.begin(); + it!=session->mInitialTargetIDs.end();++it) + { + const LLUUID id = *it; + LLRecentPeople::instance().add(id); + } + } + // If this ad-hoc is incoming then trying to get ids of people from mInitialTargetIDs + // would lead to EXT-8246. So in this case we get them from speakers list. + else + { + LLIMModel::addSpeakersToRecent(mSessionID); + } } -#endif //Mic default state is OFF on initiating/joining Ad-Hoc/Group calls if (LLVoiceClient::getInstance()->getUserPTTState() && LLVoiceClient::getInstance()->getPTTIsToggle()) diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index 54accfe4ee5f3c91dc7954ef7e2784d0f457dc33..73a37a6993210a96a3230cad85aded0eb270fd2f 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -78,36 +78,44 @@ void LLWeb::initClass() // static -void LLWeb::loadURL(const std::string& url) +void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid) { - if (gSavedSettings.getBOOL("UseExternalBrowser")) + if(target == "_internal") + { + // Force load in the internal browser, as if with a blank target. + loadURLInternal(url, "", uuid); + } + else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external")) { loadURLExternal(url); } else { - loadURLInternal(url); + loadURLInternal(url, target, uuid); } } // static -void LLWeb::loadURLInternal(const std::string &url) +void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid) { - LLFloaterReg::showInstance("media_browser", url); + LLFloaterMediaBrowser::create(url, target, uuid); } // static -void LLWeb::loadURLExternal(const std::string& url) +void LLWeb::loadURLExternal(const std::string& url, const std::string& uuid) { - loadURLExternal(url, true); + loadURLExternal(url, true, uuid); } // static -void LLWeb::loadURLExternal(const std::string& url, bool async) +void LLWeb::loadURLExternal(const std::string& url, bool async, const std::string& uuid) { + // Act like the proxy window was closed, since we won't be able to track targeted windows in the external browser. + LLViewerMedia::proxyWindowClosed(uuid); + LLSD payload; payload["url"] = url; LLNotificationsUtil::add( "WebLaunchExternalTarget", LLSD(), payload, boost::bind(on_load_url_external_response, _1, _2, async)); diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index 1ba856babebaffe6c00ec2f97f99cb50bcf83c33..291537658329e4c7f4f80fe2a012010764bba407 100644 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h @@ -43,15 +43,19 @@ class LLWeb static void initClass(); /// Load the given url in the user's preferred web browser - static void loadURL(const std::string& url); + static void loadURL(const std::string& url, const std::string& target, const std::string& uuid = LLStringUtil::null); + static void loadURL(const std::string& url) { loadURL(url, LLStringUtil::null); } /// Load the given url in the user's preferred web browser - static void loadURL(const char* url) { loadURL( ll_safe_string(url) ); } + static void loadURL(const char* url, const std::string& target) { loadURL( ll_safe_string(url), target); } + static void loadURL(const char* url) { loadURL( ll_safe_string(url), LLStringUtil::null ); } /// Load the given url in the Second Life internal web browser - static void loadURLInternal(const std::string &url); + static void loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null); + static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null); } /// Load the given url in the operating system's web browser, async if we want to return immediately /// before browser has spawned - static void loadURLExternal(const std::string& url); - static void loadURLExternal(const std::string& url, bool async); + static void loadURLExternal(const std::string& url) { loadURLExternal(url, LLStringUtil::null); }; + static void loadURLExternal(const std::string& url, const std::string& uuid); + static void loadURLExternal(const std::string& url, bool async, const std::string& uuid = LLStringUtil::null); /// Returns escaped url (eg, " " to "%20") - used by all loadURL methods static std::string escapeURL(const std::string& url); diff --git a/indra/newview/llwebsharing.cpp b/indra/newview/llwebsharing.cpp index 2b9e5cc8cb2ea233261853cd915021c5ee15c194..43b1a320c34b2d3b2f4751e50b39aa49e029aa06 100644 --- a/indra/newview/llwebsharing.cpp +++ b/indra/newview/llwebsharing.cpp @@ -3,31 +3,25 @@ * @author Aimee * @brief Web Snapshot Sharing * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - * - * Copyright (c) 2010, Linden Research, Inc. - * + * $LicenseInfo:firstyear=2010&license=viewerlgpl$ * 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 + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. * - * 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 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * 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. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ diff --git a/indra/newview/llwebsharing.h b/indra/newview/llwebsharing.h index 70046ff1d83b3ef59736b99b2935006554315463..ad9c99c224e7fd9031efd66c1819d6917bad71bc 100644 --- a/indra/newview/llwebsharing.h +++ b/indra/newview/llwebsharing.h @@ -3,31 +3,25 @@ * @author Aimee * @brief Web Snapshot Sharing * - * $LicenseInfo:firstyear=2010&license=viewergpl$ - * - * Copyright (c) 2010, Linden Research, Inc. - * + * $LicenseInfo:firstyear=2010&license=viewerlgpl$ * 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 + * Copyright (C) 2010, Linden Research, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License only. * - * 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 + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * 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. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO - * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, - * COMPLETENESS OR PERFORMANCE. + * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index 1ee3b84b5e7666ae4aeeac587710b4b410bc4252..b4a5777f1047523bea2b7c43d0bf7766d4876d10 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -870,6 +870,11 @@ BOOL LLPipeline::canUseWindLightShadersOnObjects() const && LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_OBJECT) > 0); } +BOOL LLPipeline::canUseAntiAliasing() const +{ + return (gSavedSettings.getBOOL("RenderUseFBO")); +} + void LLPipeline::unloadShaders() { LLMemType mt_us(LLMemType::MTYPE_PIPELINE_UNLOAD_SHADERS); @@ -4814,7 +4819,7 @@ void LLPipeline::enableLightsFullbright(const LLColor4& color) void LLPipeline::disableLights() { enableLights(0); // no lighting (full bright) - //glColor4f(1.f, 1.f, 1.f, 1.f); // lighting color = white by default + glColor4f(1.f, 1.f, 1.f, 1.f); // lighting color = white by default } //============================================================================ @@ -9049,7 +9054,10 @@ LLCullResult::sg_list_t::iterator LLPipeline::endAlphaGroups() BOOL LLPipeline::hasRenderType(const U32 type) const { - return mRenderTypeEnabled[type]; + // STORM-365 : LLViewerJointAttachment::setAttachmentVisibility() is setting type to 0 to actually mean "do not render" + // We then need to test that value here and return FALSE to prevent attachment to render (in mouselook for instance) + // TODO: reintroduce RENDER_TYPE_NONE in LLRenderTypeMask and initialize its mRenderTypeEnabled[RENDER_TYPE_NONE] to FALSE explicitely + return (type == 0 ? FALSE : mRenderTypeEnabled[type]); } void LLPipeline::setRenderTypeMask(U32 type, ...) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index fe0683d29f2608165adb1c56921c56a788b7e3e4..b80765dac680c30f118452a506e95a769cbc05c1 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -188,6 +188,7 @@ class LLPipeline BOOL canUseVertexShaders(); BOOL canUseWindLightShaders() const; BOOL canUseWindLightShadersOnObjects() const; + BOOL canUseAntiAliasing() const; // phases void resetFrameStats(); diff --git a/indra/newview/skins/default/textures/ff_edit_mine.tga b/indra/newview/skins/default/textures/ff_edit_mine.tga deleted file mode 100644 index 8f0c35b98fafe79c785401dd11617bd113f84395..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_edit_mine.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_edit_mine_button.tga b/indra/newview/skins/default/textures/ff_edit_mine_button.tga deleted file mode 100644 index 07627a65c5324d62dede19b26372595bb614f910..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_edit_mine_button.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_edit_theirs.tga b/indra/newview/skins/default/textures/ff_edit_theirs.tga deleted file mode 100644 index 005ada2deaa121415d9115313ce1d03d456ee789..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_edit_theirs.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_edit_theirs_button.tga b/indra/newview/skins/default/textures/ff_edit_theirs_button.tga deleted file mode 100644 index 798ef641d36954c2911df04035662a747f730732..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_edit_theirs_button.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_online_status_button.tga b/indra/newview/skins/default/textures/ff_online_status_button.tga deleted file mode 100644 index 9076df6b9e82bb6147915a27eeff096c60594b39..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_online_status_button.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_visible_map.tga b/indra/newview/skins/default/textures/ff_visible_map.tga deleted file mode 100644 index a4dad78dad145268a5db9afb68ad4f31c38f54b0..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_visible_map.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_visible_map_button.tga b/indra/newview/skins/default/textures/ff_visible_map_button.tga deleted file mode 100644 index 8d13adee3f0f27a5ceb3fabc53861dd6610cedc6..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_visible_map_button.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_visible_online.tga b/indra/newview/skins/default/textures/ff_visible_online.tga deleted file mode 100644 index 74e3a4e318faa0df3f26da33eed29bbf5a10f326..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_visible_online.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/ff_visible_online_button.tga b/indra/newview/skins/default/textures/ff_visible_online_button.tga deleted file mode 100644 index 08a6cbedd9b84c4ca567cd4a211ce4a2101c1c3f..0000000000000000000000000000000000000000 Binary files a/indra/newview/skins/default/textures/ff_visible_online_button.tga and /dev/null differ diff --git a/indra/newview/skins/default/textures/icons/edit_mine.png b/indra/newview/skins/default/textures/icons/edit_mine.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bc7efd255dbc817b342b922ddb5d3904df9ec8 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/edit_mine.png differ diff --git a/indra/newview/skins/default/textures/icons/edit_theirs.png b/indra/newview/skins/default/textures/icons/edit_theirs.png new file mode 100644 index 0000000000000000000000000000000000000000..ed36ad7cfcec78f3d68bed969ea720e05d94ad1d Binary files /dev/null and b/indra/newview/skins/default/textures/icons/edit_theirs.png differ diff --git a/indra/newview/skins/default/textures/icons/pop_up_caution.png b/indra/newview/skins/default/textures/icons/pop_up_caution.png new file mode 100644 index 0000000000000000000000000000000000000000..78b681cb3365a4e25faaafe8c0e9ab6d2aa17802 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/pop_up_caution.png differ diff --git a/indra/newview/skins/default/textures/icons/see_me_online.png b/indra/newview/skins/default/textures/icons/see_me_online.png new file mode 100644 index 0000000000000000000000000000000000000000..52dc2ae74f5f8b10216d31e7c67a577a6207d941 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/see_me_online.png differ diff --git a/indra/newview/skins/default/textures/icons/see_on_map.png b/indra/newview/skins/default/textures/icons/see_on_map.png new file mode 100644 index 0000000000000000000000000000000000000000..200e64981883774fc8a59c8c7cc0cafbc9b8489a Binary files /dev/null and b/indra/newview/skins/default/textures/icons/see_on_map.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 273531f9b291e422a9ae4b7a025dcfa08b5abbb5..925e2b5b046a6e59da7e02f4f660fbbae413001d 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -360,10 +360,10 @@ with the same filename but different name <texture name="Pause_Over" file_name="icons/Pause_Over.png" preload="false" /> <texture name="Pause_Press" file_name="icons/Pause_Press.png" preload="false" /> - <texture name="Permission_Visible_Online" file_name="ff_visible_online_button.tga" preload="false" /> - <texture name="Permission_Visible_Map" file_name="ff_visible_map_button.tga" preload="false" /> - <texture name="Permission_Edit_Objects_Mine" file_name="ff_edit_mine_button.tga" preload="false" /> - <texture name="Permission_Edit_Objects_Theirs" file_name="ff_edit_theirs_button.tga" preload="false" /> + <texture name="Permission_Visible_Online" file_name="icons/see_me_online.png" preload="false" /> + <texture name="Permission_Visible_Map" file_name="icons/see_on_map.png" preload="false" /> + <texture name="Permission_Edit_Objects_Mine" file_name="icons/edit_mine.png" preload="false" /> + <texture name="Permission_Edit_Objects_Theirs" file_name="icons/edit_theirs.png" preload="false" /> <texture name="Play_Off" file_name="icons/Play_Off.png" preload="false" /> <texture name="Play_Over" file_name="icons/Play_Over.png" preload="false" /> @@ -658,4 +658,13 @@ with the same filename but different name <texture name="buy_over" file_name="widgets/buy_over.png" preload="true" scale.left="2" scale.top="15" scale.right="67" scale.bottom="4"/> <texture name="buy_press" file_name="widgets/buy_press.png" preload="true" scale.left="2" scale.top="15" scale.right="67" scale.bottom="4"/> + <texture name="hint_background" file_name="windows/hint_background.png" preload="false" scale.left="8" scale.top="70" scale.right="195" scale.bottom="11"/> + <texture name="hint_arrow_left" file_name="windows/hint_arrow_left.png" preload="false"/> + <texture name="hint_arrow_right" file_name="windows/hint_arrow_right.png" preload="false"/> + <texture name="hint_arrow_up" file_name="windows/hint_arrow_up.png" preload="false"/> + <texture name="hint_arrow_down" file_name="windows/hint_arrow_down.png" preload="false"/> + <texture name="hint_arrow_lower_left" file_name="windows/hint_arrow_lower_left.png" preload="false"/> + + <texture name="Yellow_Gradient" file_name="windows/yellow_gradient.png"/> + <texture name="Popup_Caution" file_name="icons/pop_up_caution.png"/> </textures> diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_down.png b/indra/newview/skins/default/textures/windows/hint_arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..ddadef0978227caddb51147cef2acd510856179b Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_arrow_down.png differ diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_left.png new file mode 100644 index 0000000000000000000000000000000000000000..2794b967e826769f649d20683dccbf5f60eca1a1 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_arrow_left.png differ diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfc99898d41ef4a26360ec4361c9abd8a53dcf6 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_arrow_lower_left.png differ diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_right.png b/indra/newview/skins/default/textures/windows/hint_arrow_right.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac57f805b70d95cdfcc536deeb8067a5ef67bea Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_arrow_right.png differ diff --git a/indra/newview/skins/default/textures/windows/hint_arrow_up.png b/indra/newview/skins/default/textures/windows/hint_arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3e1c07fa73a141bd215d071be1eb300b912fb9 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_arrow_up.png differ diff --git a/indra/newview/skins/default/textures/windows/hint_background.png b/indra/newview/skins/default/textures/windows/hint_background.png new file mode 100644 index 0000000000000000000000000000000000000000..cfac5deacbab19226e9578c41da9a4dc6ceedaf2 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/hint_background.png differ diff --git a/indra/newview/skins/default/textures/windows/yellow_gradient.png b/indra/newview/skins/default/textures/windows/yellow_gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd847aaeff58a6e5d7a5b3d11908bb169554d60 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/yellow_gradient.png differ diff --git a/indra/newview/skins/default/xui/da/floater_about.xml b/indra/newview/skins/default/xui/da/floater_about.xml index 2e9d003848daa9456de581fa219282326cfb51a9..9b1df65d1bba9c180987258ec5eb0374a36cbefe 100644 --- a/indra/newview/skins/default/xui/da/floater_about.xml +++ b/indra/newview/skins/default/xui/da/floater_about.xml @@ -45,7 +45,7 @@ Voice Server Version: [VOICE_VERSION] <text_editor name="credits_editor"> Second Life er lavet til dig af Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others. -Tak til følgende beboere: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. +Tak til følgende beboere: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. diff --git a/indra/newview/skins/default/xui/da/floater_customize.xml b/indra/newview/skins/default/xui/da/floater_customize.xml deleted file mode 100644 index a47e0d33df9f21ce319e1de108825d999735d09f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_customize.xml +++ /dev/null @@ -1,530 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="UDSEENDE"> - <tab_container name="customize tab container"> - <text label="Krops Dele" name="body_parts_placeholder"> - Kropsdele - </text> - <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"/> - <radio_group name="sex radio"> - <radio_item label="Kvinde" name="radio" value="0"/> - <radio_item label="Mand" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny kropsbygning 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Ã¥'. - </text> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny hud 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Ã¥'. - </text> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <text name="Item Action Label"> - Hud: - </text> - <texture_picker label="Tatoveringer hoved" name="Head Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> - <texture_picker label="Tatover. overkrop" name="Upper Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> - <texture_picker label="Tatover. underkrop" name="Lower Tattoos" tool_tip="Klik for at vælge et billede" width="98"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt hÃ¥r ved at trække et sÃ¥dant fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et fra bunden og bagefter 'tage det pÃ¥'. - </text> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt sæt øjne ved at trække et sÃ¥dant par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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> - <text label="Tøje" name="clothes_placeholder"> - Tøj - </text> - <panel label="Trøje" name="Shirt"> - <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="Tag af" label_selected="Tag af" name="Take Off"/> - <button label="Lav ny trøje" label_selected="Lav ny trøje" 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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny trøje ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <text name="no modify instructions"> - 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" 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="Tag af" label_selected="Tag af" name="Take Off"/> - <button label="Lav nye bukser" label_selected="Lav nye bukser" 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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt par bukser ved at trække et par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <text name="Item Action Label"> - Bukser: - </text> - </panel> - <panel label="Sko" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt par sko ved at trække et par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <button label="Lav nye sko" label_selected="Lav nye sko" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt par sokker ved at trække et par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <button label="Lav nye strømper" label_selected="Lav nye strømper" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny jakke ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <button label="Lav ny jakke" label_selected="Lav ny jakke" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et sæt nye handsker ved at trække et par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <button label="Lav nye handsker" label_selected="Lav nye handsker" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny undertrøje ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <button label="Lav ny undertrøje" label_selected="Lav ny undertrøje" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg et nyt par underbukser ved at trække et par fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette et par fra bunden og bagefter 'tage dem pÃ¥'. - </text> - <button label="Lav nye underbukser" label_selected="Lav nye underbukser" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Kan ikke redigeres - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Fundet i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny nederdel ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <button label="Lav ny nederdel" label_selected="Lav ny nederdel" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at redigere denne del. - </text> - <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="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="Tatovering" name="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: kan ikke ændre - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Placeret i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny tatovering ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <button label="lav ny tatovering" label_selected="Lav ny tatovering" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at ændre denne. - </text> - <text name="Item Action Label"> - Tatovering: - </text> - <texture_picker label="Tatovering - hovede" name="Head Tattoo" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Øvre tatovering" name="Upper Tattoo" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Nedre tatovering" name="Lower Tattoo" tool_tip="Klik for at vælge et billede"/> - <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="Vend tilbage" label_selected="Vend tilbage" name="Revert"/> - </panel> - <panel label="Alpha" name="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: kan ikke ændre - </text> - <text name="title_loading"> - [DESC]: indlæser... - </text> - <text name="title_not_worn"> - [DESC]: ikke bÃ¥ret - </text> - <text name="path"> - Placeret i [PATH] - </text> - <text name="not worn instructions"> - Vælg en ny 'alpha maske' ved at trække en fra din beholdning over pÃ¥ din avatar. Du kan ogsÃ¥ oprette en fra bunden og bagefter 'tage den pÃ¥'. - </text> - <button label="Lav ny "Alpha"" label_selected="Lav ny "Alpha"" name="Create New"/> - <text name="no modify instructions"> - Du har ikke rettigheder til at ændre denne. - </text> - <text name="Item Action Label"> - Alpha: - </text> - <texture_picker label="Alpha - nedre" name="Lower Alpha" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Øvre alpha" name="Upper Alpha" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Alpha - hoved" name="Head Alpha" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Alpha - øjne" name="Eye Alpha" tool_tip="Klik for at vælge et billede"/> - <texture_picker label="Alpha - hÃ¥r" name="Hair Alpha" tool_tip="Klik for at vælge et billede"/> - <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="Vend tilbage" label_selected="Vend tilbage" name="Revert"/> - </panel> - </tab_container> - <scroll_container name="panel_container"/> - <button label="Script info" label_selected="Script info" name="script_info" tool_tip="Vis scripts vedhæftet pÃ¥ din avatar"/> - <button label="Lav sæt" label_selected="Lav sæt" name="make_outfit_btn"/> - <button label="Annullér" label_selected="Annullér" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_device_settings.xml b/indra/newview/skins/default/xui/da/floater_device_settings.xml deleted file mode 100644 index 06d431a8f98c9490c30ac3774e33d792067e7e78..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="STEMME CHAT ENHEDSOPSÆTNING"/> diff --git a/indra/newview/skins/default/xui/da/floater_im.xml b/indra/newview/skins/default/xui/da/floater_im.xml deleted file mode 100644 index 776bc9ab1391fb1a61a3d1cd197e603a4a24db3a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?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 beboer i denne session. - </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 sender en besked til beboeren vil dette automatisk medføre fjernelse af blokeringen - </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"> - Kunne ikke tilføje beboere til chat session 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_im_session.xml b/indra/newview/skins/default/xui/da/floater_im_session.xml index aa7df6ad2b951ff9ac73ecd64a7409c8630fab19..16df7e4b0311e3080fdaa311399518bcfe4ce61f 100644 --- a/indra/newview/skins/default/xui/da/floater_im_session.xml +++ b/indra/newview/skins/default/xui/da/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="IM kontrol panel" name="panel_im_control_panel"/> <layout_panel> <line_editor label="Til" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/da/floater_map.xml b/indra/newview/skins/default/xui/da/floater_map.xml index c331908c3cd1de46d821a386dd601245e2b87d75..5df9bb5f6ea5d0bbe3b4c1bc2d25209ddf146f67 100644 --- a/indra/newview/skins/default/xui/da/floater_map.xml +++ b/indra/newview/skins/default/xui/da/floater_map.xml @@ -1,28 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Map" title=""> - <floater.string name="mini_map_north"> - N - </floater.string> - <floater.string name="mini_map_east"> - Ø - </floater.string> - <floater.string name="mini_map_west"> - V - </floater.string> - <floater.string name="mini_map_south"> - S - </floater.string> - <floater.string name="mini_map_southeast"> - SØ - </floater.string> - <floater.string name="mini_map_northeast"> - NØ - </floater.string> - <floater.string name="mini_map_southwest"> - SV - </floater.string> - <floater.string name="mini_map_northwest"> - NV + <floater.string name="ToolTipMsg"> + [REGION](Dobbeltklik for at Ã¥bne kort, klik-og-træk for at panorere) </floater.string> <floater.string name="mini_map_caption"> MINIKORT diff --git a/indra/newview/skins/default/xui/da/floater_my_friends.xml b/indra/newview/skins/default/xui/da/floater_my_friends.xml deleted file mode 100644 index c3db53ce6313f8339380831d1ed9ca654e7cc227..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="KONTAKTER"> - <tab_container name="friends_and_groups"> - <panel label="Venner" name="friends_panel"/> - <panel label="Grupper" name="groups_panel"/> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml index ef4e4cbe7e6a78797c85f4a696a7a3565b780066..bd17224259a7ea66a7e0cb07dbf36b369c2f7575 100644 --- a/indra/newview/skins/default/xui/da/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/da/floater_nearby_chat.xml @@ -1,2 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="CHAT NÆRVED"/> +<floater name="nearby_chat" title="CHAT NÆRVED"> + <check_box label="Oversæt chat (hÃ¥ndteret af Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/da/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/da/floater_outfit_save_as.xml deleted file mode 100644 index 0bcb96b151ad388099cc31120ac95bcdc8aa8f81..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_outfit_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Gem sæt"> - <button label="Gem" label_selected="Gem" name="Save"/> - <button label="Annullér" label_selected="Annullér" name="Cancel"/> - <text name="Save item as:"> - Gem hvad jeg har pÃ¥ som et nyt sæt: - </text> - <line_editor name="name ed"> - [DESC] (ny) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_classified.xml b/indra/newview/skins/default/xui/da/floater_preview_classified.xml deleted file mode 100644 index bc232f3e9f9d0df33cff3198328d4d9f97357cf2..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="ANNONCE INFORMATION"> - <floater.string name="Title"> - Annonce: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_event.xml b/indra/newview/skins/default/xui/da/floater_preview_event.xml deleted file mode 100644 index 3e870b58ae5f5f1521db609c91b3ac267ce76a5d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="EVENT INFORMATION"> - <floater.string name="Title"> - Event: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml deleted file mode 100644 index 9892a92e4c2dc2520a2d1326c00d9f95e75c659d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="BEVÆGELSE GENVEJ"/> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml deleted file mode 100644 index 4d4cca1d90a3a51b78d656e29a3fa0260d0384a7..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GENVEJ BEVÆGELSER"> - <text name="trigger_label"> - Chat: - </text> - <text name="key_label"> - Tastatur: - </text> - <combo_box label="Intet" name="modifier_combo"/> - <combo_box label="Intet" name="key_combo"/> - <text name="replace_text" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser "hello" erstat med "hej" vil ændre chat 'Jeg ville bare sige hello' til 'Jeg ville bare sige hej' samtidig med bevægelsen afspilles!"> - Erstat: - </text> - <line_editor name="replace_editor" tool_tip="Erstat udløser ord med disse ord. For eksempel uløser "hello" erstat med "hej" vil ændre chat 'Jeg ville bare sige hello' til 'Jeg ville bare sige hej' samtidig med bevægelsen afspilles!"/> -</floater> diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml deleted file mode 100644 index 9892a92e4c2dc2520a2d1326c00d9f95e75c659d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="BEVÆGELSE GENVEJ"/> diff --git a/indra/newview/skins/default/xui/da/floater_statistics.xml b/indra/newview/skins/default/xui/da/floater_statistics.xml deleted file mode 100644 index 8c33f3ecb35cad4f90c26c87ccf4a2c09a3764b4..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="STATISTIK"/> diff --git a/indra/newview/skins/default/xui/da/floater_tools.xml b/indra/newview/skins/default/xui/da/floater_tools.xml index a84af9adc0985af1a492f18eccccea1960b6cc94..6fda088b511ce9b05d10194433862cdcbc5a350c 100644 --- a/indra/newview/skins/default/xui/da/floater_tools.xml +++ b/indra/newview/skins/default/xui/da/floater_tools.xml @@ -179,10 +179,10 @@ <text name="Group:"> Gruppe: </text> - <button label="Sæt..." label_selected="Sæt..." name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/> <name_box initial_value="Henter..." name="Group Name Proxy"/> - <button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med rettighederne for 'næste ejer'. Gruppe-delte objekter kan dedikeres af gruppe-administrator."/> + <button label="Sæt..." label_selected="Sæt..." name="button set group" tool_tip="Vælg en gruppe der skal dele dette objekts rettigheder"/> <check_box label="Del" name="checkbox share with group" tool_tip="Tillad alle medlemmer fra den valgte gruppe at dele dine 'redigere' rettigheder for dette objekt. Du skal dedikere for Ã¥bne for rolle begrænsninger."/> + <button label="Dedikér" label_selected="Dedikér" name="button deed" tool_tip="Dedikering giver denne genstand væk med rettighederne for 'næste ejer'. Gruppe-delte objekter kan dedikeres af gruppe-administrator."/> <text name="label click action"> Klik for at: </text> @@ -436,8 +436,9 @@ <combo_box.item label="Rør" name="suction"/> <combo_box.item label="Væv" name="weave"/> </combo_box> - <text name="tex scale"> - Gentagelser pÃ¥ overflade + <check_box initial_value="falsk" label="Flugt planare overflader" name="checkbox planar align" tool_tip="Flugt teksuter pÃ¥ alle valgte overflader med den sidst valgte overflade. Kræver at planar tekstur-mapning er valgt."/> + <text name="rpt"> + Gentagelser / overflade </text> <spinner label="Vandret (U)" name="TexScaleU"/> <check_box label="Vend" name="checkbox flip s"/> diff --git a/indra/newview/skins/default/xui/da/floater_voice_controls.xml b/indra/newview/skins/default/xui/da/floater_voice_controls.xml index 2e59dfd649e9d6f6c4f0e09ea1640800a08b251f..4c956f13a7c03f88f9be424119069726622ca182 100644 --- a/indra/newview/skins/default/xui/da/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/da/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Min avatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Forlad opkald" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Forlad opkald" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/da/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/da/floater_wearable_save_as.xml deleted file mode 100644 index 17d5b9c205184905779c463a28aa851a59d4b3b2..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Gem" label_selected="Gem" name="Save"/> - <button label="Annullér" label_selected="Annullér" name="Cancel"/> - <text name="Save item as:"> - Gem genstand i min beholdning som: - </text> - <line_editor name="name ed"> - Ny [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..1e8301dc4cb412448cb04f7b780abc65ca09a2dc --- /dev/null +++ b/indra/newview/skins/default/xui/da/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="Sortér efter nyeste" name="sort_by_most_recent"/> + <menu_item_check label="Sortér efter navn" name="sort_by_name"/> + <menu_item_check label="Sortér efter type" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/default/xui/da/menu_attachment_self.xml b/indra/newview/skins/default/xui/da/menu_attachment_self.xml index e70b7ce33d58553a1f38877f517e9924ef7e2954..1c19435f9050793e1aa18635f0e9e9cc96ae9d89 100644 --- a/indra/newview/skins/default/xui/da/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/da/menu_attachment_self.xml @@ -3,6 +3,7 @@ <menu_item_call label="Berør" name="Attachment Object Touch"/> <menu_item_call label="Redigér" name="Edit..."/> <menu_item_call label="Tag af" name="Detach"/> + <menu_item_call label="Sid ned" name="Sit Down Here"/> <menu_item_call label="StÃ¥ op" name="Stand Up"/> <menu_item_call label="Skift sæt" name="Change Outfit"/> <menu_item_call label="Redigér mit sæt" name="Edit Outfit"/> diff --git a/indra/newview/skins/default/xui/da/menu_avatar_self.xml b/indra/newview/skins/default/xui/da/menu_avatar_self.xml index ec85bd05a5378212ad7e69ee30ae978d9cb64219..5a05a12b4e166132f301160ccad30fd1886ea2b8 100644 --- a/indra/newview/skins/default/xui/da/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/da/menu_avatar_self.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> + <menu_item_call label="Sid ned" name="Sit Down Here"/> <menu_item_call label="StÃ¥ op" name="Stand Up"/> - <context_menu label="Tag af â–¶" name="Take Off >"> - <context_menu label="Tøj â–¶" name="Clothes >"> + <context_menu label="Tag af" name="Take Off >"> + <context_menu label="Tøj" name="Clothes >"> <menu_item_call label="Trøje" name="Shirt"/> <menu_item_call label="Bukser" name="Pants"/> <menu_item_call label="Nederdel" name="Skirt"/> @@ -16,8 +17,8 @@ <menu_item_call label="Alpha" name="Self Alpha"/> <menu_item_call label="Alt tøj" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Tag af â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Tag af" name="Object Detach"/> <menu_item_call label="Tag alt af" name="Detach All"/> </context_menu> <menu_item_call label="Skift sæt" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml index c7bb2a9ead5c63f489186a28df2b608034cd0fb7..e28842836ddb35fdab1ba4ef11f6de20d943af6e 100644 --- a/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_inspect_object_gear.xml @@ -9,6 +9,7 @@ <menu_item_call label="Ã…ben" name="open"/> <menu_item_call label="Redigér" name="edit"/> <menu_item_call label="Tag pÃ¥" name="wear"/> + <menu_item_call label="Tilføj" name="add"/> <menu_item_call label="Rapportér" name="report"/> <menu_item_call label="Blokér" name="block"/> <menu_item_call label="Zoom ind" name="zoom_in"/> diff --git a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml index c226d06404720a5aabc628e5d36238a1fda50d2a..a2ddd116a7deeda27434c9eccad404f3013a6470 100644 --- a/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_inspect_self_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> + <menu_item_call label="Sid ned" name="sit_down_here"/> <menu_item_call label="StÃ¥ op" name="stand_up"/> <menu_item_call label="Skift sæt" name="change_outfit"/> <menu_item_call label="Profil" name="my_profile"/> diff --git a/indra/newview/skins/default/xui/da/menu_mini_map.xml b/indra/newview/skins/default/xui/da/menu_mini_map.xml index 38486cdecb38ac4afa10322f85f37942ca0a32e8..9dcce497088da33ed3867c99d0dc98257d94300a 100644 --- a/indra/newview/skins/default/xui/da/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/da/menu_mini_map.xml @@ -4,6 +4,7 @@ <menu_item_call label="Zoom mellem" name="Zoom Medium"/> <menu_item_call label="Zoom langt" name="Zoom Far"/> <menu_item_check label="Rotér kort" name="Rotate Map"/> + <menu_item_check label="Auto centrér" name="Auto Center"/> <menu_item_call label="Fjern ref." name="Stop Tracking"/> <menu_item_call label="Verdenskort" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_object.xml b/indra/newview/skins/default/xui/da/menu_object.xml index f4f7eb0af8e7ecea8251493f3be9eca66195916d..bc0cdde86fd868b90d7cfb66db5c548cbda18977 100644 --- a/indra/newview/skins/default/xui/da/menu_object.xml +++ b/indra/newview/skins/default/xui/da/menu_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> <menu_item_call label="Berør" name="Object Touch"> - <on_enable parameter="Berør" name="EnableTouch"/> + <menu_item_call.on_enable name="EnableTouch" parameter="Berør"/> </menu_item_call> <menu_item_call label="Redigér" name="Edit..."/> <menu_item_call label="Byg" name="Build"/> @@ -10,18 +10,18 @@ <menu_item_call label="StÃ¥ op" name="Object Stand Up"/> <menu_item_call label="Objekt profil" name="Object Inspect"/> <menu_item_call label="Zoom In" name="Zoom In"/> - <context_menu label="Tag pÃ¥ â–¶" name="Put On"> + <context_menu label="Tag pÃ¥" name="Put On"> <menu_item_call label="Tag pÃ¥" name="Wear"/> - <context_menu label="Vedhæft â–¶" name="Object Attach"/> - <context_menu label="Vedhæft HUD â–¶" name="Object Attach HUD"/> + <menu_item_call label="Tilføj" name="Add"/> + <context_menu label="Vedhæft" name="Object Attach"/> + <context_menu label="Vedhæft HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Fjern â–¶" name="Remove"> + <context_menu label="Fjern" name="Remove"> <menu_item_call label="Rapportér misbrug" name="Report Abuse..."/> <menu_item_call label="Blokér" name="Object Mute"/> <menu_item_call label="Returnér" name="Return..."/> <menu_item_call label="Slet" name="Delete"/> </context_menu> - <menu_item_call label="Køb" name="Pie Object Bye"/> <menu_item_call label="Tag" name="Pie Object Take"/> <menu_item_call label="Tag kopi" name="Take Copy"/> <menu_item_call label="Betal" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/da/menu_participant_list.xml b/indra/newview/skins/default/xui/da/menu_participant_list.xml index 2bd28e10de558a9001156f1dcda1e620d04c40f2..5951d3ffb9858aca1c8ac65c3a87d78717db597f 100644 --- a/indra/newview/skins/default/xui/da/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/da/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="Se person ikoner" name="View Icons"/> <menu_item_check label="Blokér stemme" name="Block/Unblock"/> <menu_item_check label="Blokér tekst" name="MuteText"/> - <context_menu label="Moderator muligheder >" name="Moderator Options"> + <context_menu label="Moderator valg" name="Moderator Options"> <menu_item_check label="Tillad tekst chat" name="AllowTextChat"/> <menu_item_call label="Sluk for denne deltager" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Fjern slukning for denne deltager" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml index 525450f23f4ae1de0e866912095f4d5464add6b2..32c5e6a6c7fa7336afe46b94f51e05d8c200494a 100644 --- a/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/da/menu_people_friends_view_sort.xml @@ -3,5 +3,6 @@ <menu_item_check label="Sortér efter navn" name="sort_name"/> <menu_item_check label="Sortér efter status" name="sort_status"/> <menu_item_check label="Vis person ikoner" name="view_icons"/> + <menu_item_check label="Vis tildelte rettigheder" name="view_permissions"/> <menu_item_call label="Vis blokerede beboere og objekter" name="show_blocked_list"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml index 08b7136b97c983a8521f095de8a0f70bd7a0ea68..9318a0e3409c6fbd534d1b93e5dc9c7bdad2a9ac 100644 --- a/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/da/menu_people_nearby_multiselect.xml @@ -6,4 +6,5 @@ <menu_item_call label="Opkald" name="Call"/> <menu_item_call label="Del" name="Share"/> <menu_item_call label="Betal" name="Pay"/> + <menu_item_call label="tilbyd teleport" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml index fa74568c2d6957764b01fae732b47e457a5b23ee..73986372cec955f2b65c6bafb87862429c95b8dd 100644 --- a/indra/newview/skins/default/xui/da/menu_viewer.xml +++ b/indra/newview/skins/default/xui/da/menu_viewer.xml @@ -92,7 +92,6 @@ <menu_item_call label="Sæt scripts til "Not Running"" name="Set Scripts to Not Running"/> </menu> <menu label="Valg" name="Options"> - <menu_item_call label="Sæt standard rettigher for upload" name="perm prefs"/> <menu_item_check label="Vis avancerede rettigheder" name="DebugPermissions"/> <menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/> <menu_item_check label="Vis kun flytbare objekter" name="Select Only Movable Objects"/> @@ -119,7 +118,6 @@ <menu_item_call label="Om [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avanceret" name="Advanced"> - <menu_item_check label="Vis avanceret menu" name="Show Advanced Menu"/> <menu_item_call label="Stop animering af min avatar" name="Stop Animating My Avatar"/> <menu_item_call label="Gendan teksturer" name="Rebake Texture"/> <menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/> @@ -166,7 +164,6 @@ <menu_item_check label="TÃ¥ge" name="Fog"/> <menu_item_check label="Fleksible objekter" name="Flexible Objects"/> </menu> - <menu_item_check label="Kør flere 'threats'" name="Run Multiple Threads"/> <menu_item_check label="Benyt "Plugin Read Thread"" name="Use Plugin Read Thread"/> <menu_item_call label="Tøm gruppe cache" name="ClearGroupCache"/> <menu_item_check label="Muse udjævning" name="Mouse Smoothing"/> @@ -175,7 +172,6 @@ <menu_item_check label="Søg" name="Search"/> <menu_item_call label="Frigør taster" name="Release Keys"/> <menu_item_call label="Sæt UI størrelse til standard" name="Set UI Size to Default"/> - <menu_item_check label="Vis avanceret menu" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Løb altid" name="Always Run"/> <menu_item_check label="Flyv" name="Fly"/> <menu_item_call label="Luk vindue" name="Close Window"/> @@ -195,6 +191,7 @@ <menu_item_call label="Zoom ind" name="Zoom In"/> <menu_item_call label="Zoom standard" name="Zoom Default"/> <menu_item_call label="Zoom ud" name="Zoom Out"/> + <menu_item_check label="Vis avanceret menu" name="Show Advanced Menu"/> </menu> <menu_item_call label="Vis debug valg" name="Debug Settings"/> <menu_item_check label="Vis udviklingsmenu" name="Debug Mode"/> @@ -237,9 +234,15 @@ <menu label="Gengivelse" name="Rendering"> <menu_item_check label="Akser" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Global oplysning" name="Global Illumination"/> + <menu_item_check label="Lys og skygger" name="Lighting and Shadows"/> + <menu_item_check label="Skygger fra sol/mÃ¥ne/andre lyskilder" name="Shadows from Sun/Moon/Projectors"/> + <menu_item_check label="SSAO og skygge udjævning" name="SSAO and Shadow Smoothing"/> + <menu_item_check label="Globalt lys (eksperimentiel)" name="Global Illumination"/> + <menu_item_check label="Automatisk alpha-masker (udskudte)" name="Automatic Alpha Masks (deferred)"/> + <menu_item_check label="Automatiske alpha-masker (ikke udskudt)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Animationsteksturer" name="Animation Textures"/> <menu_item_check label="SlÃ¥ teksturer fra" name="Disable Textures"/> + <menu_item_check label="Tekstur atlas (eksperimentiel)" name="Texture Atlas"/> <menu_item_check label="Gengiv vedhæftede lys" name="Render Attached Lights"/> <menu_item_check label="Gengiv vedhæftede partikler" name="Render Attached Particles"/> <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> @@ -259,7 +262,8 @@ <menu_item_call label="Test web browser" name="Web Browser Test"/> <menu_item_call label="Print info om valgt objekt" name="Print Selected Object Info"/> <menu_item_call label="Hukommelse statistik" name="Memory Stats"/> - <menu_item_check label="Dobbelt-klik auto-pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Dobbeltklik for auto-pilot" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Dobeltklik for at teleportere" name="DoubleClick Teleport"/> <menu_item_check label="Debug klik" name="Debug Clicks"/> <menu_item_check label="Debug muse-hændelser" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml index 00055c89322b3a4938d58a28f364a39b7c4db97b..63f4b0b38849cdb60770137ef4f52f64a5879c12 100644 --- a/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/da/menu_wearable_list_item.xml @@ -5,10 +5,10 @@ <menu_item_call label="Tilføj" name="wear_add"/> <menu_item_call label="Tag af" name="take_off_or_detach"/> <menu_item_call label="Tag af" name="detach"/> - <context_menu label="Vedhæft til â–¶" name="wearable_attach_to"/> - <context_menu label="Vedhæft pÃ¥ HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Vedhæft til" name="wearable_attach_to"/> + <context_menu label="Vedhæft til HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Tag af" name="take_off"/> <menu_item_call label="Redigér" name="edit"/> - <menu_item_call label="Objekt profil" name="object_profile"/> + <menu_item_call label="Genstandsprofil" name="object_profile"/> <menu_item_call label="Vis original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml index 39f99ad6aab59149164739078620a70843bc8313..515a15b287ea9a122af3176b1bc8cab204cbbbcc 100644 --- a/indra/newview/skins/default/xui/da/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/da/menu_wearing_gear.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Gear Wearing"> <menu_item_call label="Redigér sæt" name="edit"/> + <menu_item_call label="Tag af" name="takeoff"/> </menu> diff --git a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml index 878c8bb04d66ab5f1f5eda3c4278b30bfc2b19ee..c0db7b68426012c915339b32dfd5093ae60ea9d9 100644 --- a/indra/newview/skins/default/xui/da/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/da/menu_wearing_tab.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Wearing"> + <menu_item_call label="Tag af" name="take_off"/> + <menu_item_call label="Tag af" name="detach"/> <menu_item_call label="Redigér sæt" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 62d9c5a203c4bdeeb2631005d0f4830c9b85854d..eaae513e749dc6908d3a3580ec6885e4cf56fcef 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -808,6 +808,10 @@ For at fÃ¥ adgang til voksen regioner, skal beboere være alders-checket, enten <notification name="ConfirmQuit"> <usetemplate ignoretext="Bekræft før jeg afslutter" name="okcancelignore" notext="Afslut ikke" yestext="Quit"/> </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Bekræft før sletning af genstande" name="okcancelignore" notext="Annullér" yestext="OK"/> + </notification> <notification name="HelpReportAbuseEmailLL"> Benyt dette værktøj til at rapportere krænkninger af [http://secondlife.com/corporate/tos.php Terms of Service] og [http://secondlife.com/corporate/cs.php Community Standards]. @@ -1634,9 +1638,13 @@ Check venligst din netværks- og firewall setup. ( [EXISTENCE] sekunder i live ) Avatar '[NAME]' forsvandt helt "uploaded". </notification> - <notification name="AvatarRezSelfBakeNotification"> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ( [EXISTENCE] sekunder i live ) +Du uploadede en [RESOLUTION] "bagt" tekstur til '[BODYREGION]' efter [TIME] sekunder. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> ( [EXISTENCE] sekunder i live ) -You [ACTION] a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds. +Du opdaterede en [RESOLUTION] "bagt" tekstur for '[BODYREGION]' efter [TIME] sekunder. </notification> <notification name="ConfirmLeaveCall"> Er du sikker pÃ¥ at du vil forlade dette opkald? diff --git a/indra/newview/skins/default/xui/da/panel_audio_device.xml b/indra/newview/skins/default/xui/da/panel_audio_device.xml deleted file mode 100644 index f6d817540e9f7b3f56e17d8f4e721e940d8e24cb..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="device_settings"> - <text name="Audio Devices"> - Lydenheder - </text> - <text name="Input device (microphone):"> - Input enhed (mikrofon): - </text> - <text name="Output device (speakers):"> - Output enhed (højtalere): - </text> - <text name="Input level:"> - Input niveau - </text> - <text_editor 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_avatar_list_item.xml b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml index 56332c00e614871e20c9ef59c1266704e9543ceb..df1173a0a08a61673b2e6342bee9f0a492eb8719 100644 --- a/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/da/panel_avatar_list_item.xml @@ -22,5 +22,9 @@ [COUNT]Ã¥ </string> <text name="avatar_name" value="Ukendt"/> + <icon name="permission_edit_theirs_icon" tool_tip="Du kan redigere denne vens objekter"/> + <icon name="permission_edit_mine_icon" tool_tip="Denne ven kan redigere, slette eller tage dine objekter"/> + <icon name="permission_map_icon" tool_tip="Denne ven kan finde dig pÃ¥ kortet"/> + <icon name="permission_online_icon" tool_tip="Denne ven kan se nÃ¥r du er online"/> <button name="profile_btn" tool_tip="Vis profil"/> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_bottomtray.xml b/indra/newview/skins/default/xui/da/panel_bottomtray.xml index 2d288a9494efebc8d0013723b1fd184ce2fc3848..3cd9d55dd0bb1356dddab1d6b3c30c2c46ddda29 100644 --- a/indra/newview/skins/default/xui/da/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/da/panel_bottomtray.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> <string name="SpeakBtnToolTip" value="SlÃ¥ mikrofon til/fra"/> <string name="VoiceControlBtnToolTip" value="Vis/skjul stemme kontrolpanel"/> <layout_stack name="toolbar_stack"> @@ -12,28 +13,25 @@ <gesture_combo_list label="Bevægelse" name="Gesture" tool_tip="Skjuler/viser bevægelser"/> </layout_panel> <layout_panel name="movement_panel"> - <button label="Flyt" name="movement_btn" tool_tip="Vis/skjul bevægelseskontroller"/> + <bottomtray_button label="Flyt" name="movement_btn" tool_tip="Vis/skjul bevægelseskontroller"/> </layout_panel> <layout_panel name="cam_panel"> - <button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> + <bottomtray_button label="Vis" name="camera_btn" tool_tip="Vis/Skjul kamerakontroller"/> </layout_panel> <layout_panel name="snapshot_panel"> - <button label="" name="snapshots" tool_tip="Tag foto"/> - </layout_panel> - <layout_panel name="sidebar_btn_panel"> - <button label="Sidepanel" name="sidebar_btn" tool_tip="Vis/skjul sidepanel"/> + <bottomtray_button label="" name="snapshots" tool_tip="Tag foto"/> </layout_panel> <layout_panel name="build_btn_panel"> - <button label="Byg" name="build_btn" tool_tip="Vis/skjul byggeværktøjer"/> + <bottomtray_button label="Byg" name="build_btn" tool_tip="Vis/skjul byggeværktøjer"/> </layout_panel> <layout_panel name="search_btn_panel"> - <button label="Søg" name="search_btn" tool_tip="Vis/skjul søgning"/> + <bottomtray_button label="Søg" name="search_btn" tool_tip="Vis/skjul søgning"/> </layout_panel> <layout_panel name="world_map_btn_panel"> - <button label="Kort" name="world_map_btn" tool_tip="Vis/skjul verdenskort"/> + <bottomtray_button label="Kort" name="world_map_btn" tool_tip="Vis/skjul verdenskort"/> </layout_panel> <layout_panel name="mini_map_btn_panel"> - <button label="Mini-kort" name="mini_map_btn" tool_tip="Vis/skjul Mini-kort"/> + <bottomtray_button label="Mini-kort" name="mini_map_btn" tool_tip="Vis/skjul Mini-kort"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/default/xui/da/panel_classified_info.xml b/indra/newview/skins/default/xui/da/panel_classified_info.xml index 28f89364573cb576f0c29503fd211f1fd1c3df60..5790f1f19f849abb774a78b1d88d9aa0501cc152 100644 --- a/indra/newview/skins/default/xui/da/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/da/panel_classified_info.xml @@ -46,8 +46,16 @@ </panel> </scroll_container> <panel name="buttons"> - <button label="Teleport" name="teleport_btn"/> - <button label="Kort" name="show_on_map_btn"/> - <button label="Redigér" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleportér" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Kort" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Redigér" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_classified.xml b/indra/newview/skins/default/xui/da/panel_edit_classified.xml index 7fb2f930fa8deb759155b68a99dd1bdbda80fbb2..fc4780a34e18cb83b19c732808b1255483d3d5f6 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_classified.xml @@ -36,13 +36,19 @@ <icons_combo_box.item label="Moderat" name="mature_ci" value="Voksent"/> <icons_combo_box.item label="Generelt" name="pg_ci" value="PG"/> </icons_combo_box> + <check_box label="Forny automatisk hver uge" name="auto_renew"/> <text name="price_for_listing_label" value="Pris for optagelse:"/> <spinner label="L$" name="price_for_listing" tool_tip="Pris for optagelse." value="50"/> - <check_box label="Forny automatisk hver uge" name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="[LABEL]" name="save_changes_btn"/> - <button label="Annullér" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="[LABEL]" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Annullér" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml index dcc4e7a4b6d68f4c22f26f8cbcf441902f1c6d3b..fd287b1a0a8e510f6c98ebfda0339fbecd67174b 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml @@ -25,7 +25,13 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Gem favorit Pick" name="save_changes_btn"/> - <button label="Annullér" name="cancel_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Gem valgte" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="layout_panel1"> + <button label="Annullér" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_profile.xml b/indra/newview/skins/default/xui/da/panel_edit_profile.xml index 85461e23a7945af04e503adff9e802d2b7c2d8ad..27a60004191ee83ad7bece0e4e6ea0f1d4d2de2a 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_profile.xml @@ -46,7 +46,13 @@ </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Gem ændringer" name="save_btn"/> - <button label="Annullér" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="Gem ændringer" name="save_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Annullér" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml index 604c166ef06eb6a187f03f35237695573aef5c43..4b9360f0d1569029626bfbed771c1848a5b1d817 100644 --- a/indra/newview/skins/default/xui/da/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/da/panel_edit_wearable.xml @@ -102,7 +102,13 @@ <icon name="female_icon" tool_tip="Kvindelig"/> </panel> <panel name="button_panel"> - <button label="Gem som" name="save_as_button"/> - <button label="Annullér ændringer" name="revert_button"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="save_as_btn_lp"> + <button label="Gem som" name="save_as_button"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Annullér ændringer" name="revert_button"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_friends.xml b/indra/newview/skins/default/xui/da/panel_friends.xml deleted file mode 100644 index a1a25bdc77533006b4c786c741f8ab5c8c7fa878..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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 en beboer"/> -</panel> diff --git a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml index a7aa8424391bb170b51163a2080612ae84e6c771..3d561f1e5b2a2c9a682aa464ae402c25202b2025 100644 --- a/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/da/panel_group_info_sidetray.xml @@ -13,7 +13,7 @@ Gratis </panel.string> <panel name="group_info_top"> - <text name="group_name" value="(Henter...)"/> + <text_editor name="group_name" value="(Henter...)"/> <line_editor label="Indtast nyt gruppenavn her" name="group_name_editor"/> </panel> <layout_stack name="layout"> @@ -25,10 +25,16 @@ <accordion_tab name="group_land_tab" title="Land/Aktiver"/> </accordion> </layout_panel> - <layout_panel name="button_row"> + </layout_stack> + <layout_stack name="button_row_ls"> + <layout_panel name="btn_chat_lp"> <button label="Chat" name="btn_chat"/> + </layout_panel> + <layout_panel name="call_btn_lp"> <button label="Gruppeopkald" name="btn_call" tool_tip="Opkald til denne gruppe"/> - <button label="Gem" label_selected="Save" name="btn_apply"/> + </layout_panel> + <layout_panel name="btn_apply_lp"> + <button label="Gem" label_selected="Gem" name="btn_apply"/> <button label="Opret gruppe" name="btn_create" tool_tip="Opret en ny gruppe"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/default/xui/da/panel_groups.xml b/indra/newview/skins/default/xui/da/panel_groups.xml deleted file mode 100644 index 5877226e5704228925228edb1caa953ede05e641..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_groups.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="groups"> - <scroll_list name="group list"> - <column label="" name="name" /> - </scroll_list> - <text name="groupdesc" width="300"> - Din nuværende aktive gruppe er fremhævet i listen. - </text> - <text name="groupcount" width="300"> - 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_landmarks.xml b/indra/newview/skins/default/xui/da/panel_landmarks.xml index 9a0a2fb207e3152f616e254720e50d2b18a14777..e9e5e506fd7cf7eb683c69c58d7dbc2100410a9c 100644 --- a/indra/newview/skins/default/xui/da/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/da/panel_landmarks.xml @@ -7,8 +7,16 @@ <accordion_tab name="tab_library" title="Bibliotek"/> </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Vis yderligere valg"/> - <button name="add_btn" tool_tip="Tilføj nyt landemærke"/> - <dnd_button name="trash_btn" tool_tip="Fjern valgte landemærke"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Vis flere valg"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Tilføj nyt landemærke"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Fjern valgte landemærke"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_my_profile.xml b/indra/newview/skins/default/xui/da/panel_my_profile.xml index 7eb3c9f4e5dbecc65cf82d600d16694596b7de5c..2db4b278d746ad302e9fea52ad72a44d8473ee38 100644 --- a/indra/newview/skins/default/xui/da/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_my_profile.xml @@ -27,9 +27,8 @@ </panel> </scroll_container> </layout_panel> - <layout_panel name="profile_me_buttons_panel"> - <button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> - <button label="Rediger udseende" name="edit_appearance_btn" tool_tip="Opret/tilret dit udseende: fysiske data, tøj m.v."/> - </layout_panel> </layout_stack> + <panel name="profile_me_buttons_panel"> + <button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_nearby_chat.xml b/indra/newview/skins/default/xui/da/panel_nearby_chat.xml deleted file mode 100644 index 7f94345976ddfeaaaedfd3cd8fb7d9f33f7524c3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - CHAT NÆRVED - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/da/panel_notes.xml b/indra/newview/skins/default/xui/da/panel_notes.xml index 5b3a2d09066de927b0e5bf3f9bbec08f081e046e..7d8097f6ffeea0b60b15a569199bfd2f5e243434 100644 --- a/indra/newview/skins/default/xui/da/panel_notes.xml +++ b/indra/newview/skins/default/xui/da/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Noter & Privatliv" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Min private noter:"/> @@ -11,13 +11,25 @@ <check_box label="Editére, slette og tage mine objekter" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboer"/> - <button label="IM" name="im" tool_tip="Ã…ben session med personlig besked (IM)"/> - <button label="Kald" name="call" tool_tip="Opkald til denne beboer"/> - <button label="Kort" name="show_on_map_btn" tool_tip="Vis beboer pÃ¥ kort"/> - <button label="Teleport" name="teleport" tool_tip="Tilbyd teleport"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboer"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="IM" name="im" tool_tip="Ã…ben session med personlige beskeder"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Kort" name="show_on_map_btn" tool_tip="Vis denne beboer pÃ¥ kortet"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_online_status.xml b/indra/newview/skins/default/xui/da/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/da/panel_outfit_edit.xml b/indra/newview/skins/default/xui/da/panel_outfit_edit.xml index 99ef3b5411237ae3d6f757cb1e415b58f83cb289..3736ea06ba5ad910a28e2eeefba35b75114c971b 100644 --- a/indra/newview/skins/default/xui/da/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/da/panel_outfit_edit.xml @@ -45,7 +45,13 @@ <button name="shop_btn_2" tool_tip="Besøg SL markedspladsen. Du kan ogsÃ¥ vælge noget du har pÃ¥, og sÃ¥ klikke her for at se andre ting som dette"/> </panel> <panel name="save_revert_button_bar"> - <button label="Gem" name="save_btn"/> - <button label="Annullér ændringer" name="revert_btn" tool_tip="Vend tilbage til sidst gemte version"/> + <layout_stack name="button_bar_ls"> + <layout_panel name="save_btn_lp"> + <button label="Gem" name="save_btn"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Annullér ændringer" name="revert_btn" tool_tip="Vend tilbage til gemt version"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml index 6f9dd5b775e8669d86b72fe827845c127efcfb1b..055c42c003d0fcf763bde8bb8913a880d72cdc28 100644 --- a/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/da/panel_outfits_inventory.xml @@ -11,7 +11,13 @@ <panel label="HAR PÃ…" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> - <button label="Gem som" name="save_btn"/> - <button label="Tag pÃ¥" name="wear_btn" tool_tip="Tag valgte sæt pÃ¥"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_btn_lp"> + <button label="Gem som" name="save_btn"/> + </layout_panel> + <layout_panel name="wear_btn_lp"> + <button label="Tag pÃ¥" name="wear_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml index 5d8474259c5f749d03570dd51bf4c1f3c8cdaff8..6c910cc3b2fa650bb1e4f1bbbc7718ff68915fc6 100644 --- a/indra/newview/skins/default/xui/da/panel_people.xml +++ b/indra/newview/skins/default/xui/da/panel_people.xml @@ -32,9 +32,17 @@ Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Worl <accordion_tab name="tab_all" title="Alle"/> </accordion> <panel label="bottom_panel" name="bottom_panel"> - <button name="friends_viewsort_btn" tool_tip="Valg"/> - <button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/> - <button name="del_btn" tool_tip="Fjern valgte person fra din venneliste"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="friends_viewsort_btn" tool_tip="Vis flere valg"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Tilbyd venskab til en beboer"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Fjern valgte personer fra venneliste"/> + </layout_panel> + </layout_stack> </panel> </panel> <panel label="MINE GRUPPER" name="groups_panel"> @@ -52,13 +60,33 @@ Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Worl </panel> </tab_container> <panel name="button_bar"> - <button label="Profil" name="view_profile_btn" tool_tip="Vis billede, gruppe og anden information om beboer"/> - <button label="IM" name="im_btn" tool_tip="Chat privat med denne person"/> - <button label="Opkald" name="call_btn" tool_tip="Opkald til denne beboer"/> - <button label="Del" name="share_btn" tool_tip="Del en genstand i beholdning"/> - <button label="Teleport" name="teleport_btn" tool_tip="Tilbyd teleport"/> - <button label="Group profil" name="group_info_btn" tool_tip="Vis gruppe information"/> - <button label="Gruppe chat" name="chat_btn" tool_tip="Ã…ben chat session"/> - <button label="Gruppe opkald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="IM" name="im_btn" tool_tip="Ã…ben session med privat besked (IM)"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Kald" name="call_btn" tool_tip="Opkald til denne beboer"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Gruppe profil" name="group_info_btn" tool_tip="Vis gruppe information"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Gruppe chat" name="chat_btn" tool_tip="Ã…ben chat session"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Gruppe kald" name="group_call_btn" tool_tip="Opkald til denne gruppe"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_pick_info.xml b/indra/newview/skins/default/xui/da/panel_pick_info.xml index ce05018b5b0882791a9bac69138565cf61a44d0b..8a5141f967a0e35fb66740565782fcd0f98cedfa 100644 --- a/indra/newview/skins/default/xui/da/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/da/panel_pick_info.xml @@ -3,14 +3,22 @@ <text name="title" value="Favorit info"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <text name="pick_name" value="[name]"/> - <text name="pick_location" value="[loading...]"/> - <text name="pick_desc" value="[description]"/> + <text_editor name="pick_name" value="[name]"/> + <text_editor name="pick_location" value="[loading...]"/> + <text_editor name="pick_desc" value="[description]"/> </panel> </scroll_container> <panel name="buttons"> - <button label="Teleportér" name="teleport_btn"/> - <button label="Kort" name="show_on_map_btn"/> - <button label="Redigér" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleport" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Kort" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Rediger" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_picks.xml b/indra/newview/skins/default/xui/da/panel_picks.xml index ee3c59b88a8675dd0873e4572cf7b4d14948d72b..8af68ee69ad1207ade28a4c4c061484126325a81 100644 --- a/indra/newview/skins/default/xui/da/panel_picks.xml +++ b/indra/newview/skins/default/xui/da/panel_picks.xml @@ -2,19 +2,28 @@ <panel label="Favoritter" name="panel_picks"> <string name="no_picks" value="Ingen favoritter"/> <string name="no_classifieds" value="Ingen annoncer"/> - <text name="empty_picks_panel_text"> - Der er ingen favoritter/annoncer her - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Favoritter"/> <accordion_tab name="tab_classifieds" title="Annoncer"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Opret en ny favorit eller annonce pÃ¥ dette sted"/> + <layout_stack name="edit_panel_ls"> + <layout_panel name="gear_menu_btn"> + <button name="new_btn" tool_tip="Opret favorit eller annonce pÃ¥ nuværende lokation"/> + </layout_panel> + </layout_stack> </panel> <panel name="buttons_cucks"> - <button label="Info" name="info_btn" tool_tip="Vis favorit information"/> - <button label="Teleportér" name="teleport_btn" tool_tip="Teleportér til dette sted"/> - <button label="Kort" name="show_on_map_btn" tool_tip="Vis dette sted pÃ¥ verdenskort"/> + <layout_stack name="buttons_cucks_ls"> + <layout_panel name="info_btn_lp"> + <button label="Info" name="info_btn" tool_tip="Vis favoritinformation"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleport" name="teleport_btn" tool_tip="Teleportér til tilsvarende omrÃ¥de"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Kort" name="show_on_map_btn" tool_tip="Vis tilsvarende omrÃ¥de pÃ¥ verdenskort"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml index ac15da1717abb7c5aad4c98d6de314846e0397d7..ca3d7c71bbc107fdde0440d653683c595294920a 100644 --- a/indra/newview/skins/default/xui/da/panel_places.xml +++ b/indra/newview/skins/default/xui/da/panel_places.xml @@ -4,13 +4,45 @@ <string name="teleport_history_tab_title" value="TELEPORT HISTORIK"/> <filter_editor label="Filtrér mine steder" name="Filter"/> <panel name="button_panel"> - <button label="Teleportér" name="teleport_btn" tool_tip="Teleportér til det valgte omrÃ¥de"/> - <button label="Kort" name="map_btn" tool_tip="Vis dette omrÃ¥de pÃ¥ verdenskortet"/> - <button label="Redigér" name="edit_btn" tool_tip="Redigér landemærke information"/> - <button label="â–¼" name="overflow_btn" tool_tip="Vise flere valgmuligheder"/> - <button label="Gem" name="save_btn"/> - <button label="Annullér" name="cancel_btn"/> - <button label="Luk" name="close_btn"/> - <button label="Profil" name="profile_btn" tool_tip="Vis profil for stedet"/> + <layout_stack name="bottom_bar_ls0"> + <layout_panel name="lp1"> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="teleport_btn_lp"> + <button label="Teleport" name="teleport_btn" tool_tip="Teleportér til valgte omrÃ¥de"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Kort" name="map_btn" tool_tip="Vis tilsvarende omrÃ¥de pÃ¥ verdenskort"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="lp2"> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="edit_btn_lp"> + <button label="Redigér" name="edit_btn" tool_tip="Redigér landemærke information"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Vis flere valg"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="profile_btn_lp"> + <button label="Profil" name="profile_btn" tool_tip="Vis profil for sted"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_close_ls3"> + <layout_panel name="close_btn_lp"> + <button label="Luk" name="close_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls2"> + <layout_panel name="save_btn_lp"> + <button label="Gem" name="save_btn"/> + </layout_panel> + <layout_panel name="cancel_btn_lp"> + <button label="Annullér" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </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 bea106bf28c64d37be89f35142c2450de7496885..72f8476094c4af17c43d84b3ae31b01442a4427a 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_chat.xml @@ -56,9 +56,9 @@ <radio_item label="Separate vinduer" name="radio" value="0"/> <radio_item label="Faner" name="radio2" value="1"/> </radio_group> - <check_box label="Oversæt Chat" name="translate_chat_checkbox" /> + <check_box label="Benyt maskin-oversættelse ved chat (hÃ¥ndteret af Google)" name="translate_chat_checkbox"/> <text name="translate_language_text" width="110"> - Chat Sprog: + Oversæt chat til : </text> <combo_box name="translate_language_combobox" width="146"> <combo_box.item label="System standard" name="System Default Language"/> @@ -67,16 +67,16 @@ <combo_box.item label="Deutsch (Tysk)" name="German"/> <combo_box.item label="Español (Spansk)" name="Spanish"/> <combo_box.item label="Français (Fransk)" name="French"/> - <combo_box.item label="Italiano (Italiensk)" name="Italian" /> - <combo_box.item label="Magyar (Ungarsk)" name="Hungarian" /> - <combo_box.item label="Nederlands (Hollandsk)" name="Dutch" /> - <combo_box.item label="Polski (Polsk)" name="Polish" /> - <combo_box.item label="Português (Portugisisk)" name="Portugese" /> - <combo_box.item label="РуÑÑкий (Russisk)" name="Russian" /> - <combo_box.item label="Türkçe (Tyrkisk)" name="Turkish" /> - <combo_box.item label="УкраїнÑька (Ukrainsk)" name="Ukrainian" /> - <combo_box.item label="ä¸æ–‡ (简体) (Kinesisk)" name="Chinese" /> - <combo_box.item label="日本語 (Japansk)" name="Japanese" /> - <combo_box.item label="í•œêµì–´ (Koreansk)" name="Korean" /> + <combo_box.item label="Italiano (Italiensk)" name="Italian"/> + <combo_box.item label="Magyar (Ungarsk)" name="Hungarian"/> + <combo_box.item label="Nederlands (Hollandsk)" name="Dutch"/> + <combo_box.item label="Polski (Polsk)" name="Polish"/> + <combo_box.item label="Português (Portugisisk)" name="Portugese"/> + <combo_box.item label="РуÑÑкий (Russisk)" name="Russian"/> + <combo_box.item label="Türkçe (Tyrkisk)" name="Turkish"/> + <combo_box.item label="УкраїнÑька (Ukrainsk)" name="Ukrainian"/> + <combo_box.item label="ä¸æ–‡ (简体) (Kinesisk)" name="Chinese"/> + <combo_box.item label="日本語 (Japansk)" name="Japanese"/> + <combo_box.item label="í•œêµì–´ (Koreansk)" name="Korean"/> </combo_box> </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 62214089f52804ed702505d544e361bd5c92a6bd..5bc5025ff19fb422dec85714f7e54a008e54fea5 100644 --- a/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/da/panel_preferences_graphics1.xml @@ -29,22 +29,16 @@ <check_box initial_value="true" label="Glatte flader og skin" name="BumpShiny"/> <check_box initial_value="true" label="Basale flader" name="BasicShaders" tool_tip="Ved at slÃ¥ dette valg fra, kan det forhindres at visse grafikkort drivere crasher."/> <check_box initial_value="true" label="Atmosfæriske flader" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Reflektioner i vand" name="Reflections"/> - <text name="ReflectionDetailText"> - Spejlnings detaljer: + <text name="reflection_label"> + Reflektioner i vand: </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item label="Terræn og træer" name="0"/> - <radio_item label="Alle statiske objekter" name="1"/> - <radio_item label="Alle avatarer og objekter" name="2"/> - <radio_item label="Alt" name="3"/> - </radio_group> - <text name="AvatarRenderingText"> - Avatar gengivelse - </text> - <check_box initial_value="true" label="Mini-figurer pÃ¥ lang afstand" name="AvatarImpostors"/> - <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="Avatar tøj" name="AvatarCloth"/> + <combo_box initial_value="true" label="Reflektioner i vand" name="Reflections"> + <combo_box.item label="Minimum" name="0"/> + <combo_box.item label="Terræn og træer" name="1"/> + <combo_box.item label="Alle statiske objekter" name="2"/> + <combo_box.item label="Alle avatarer og objekter" name="3"/> + <combo_box.item label="Alt" name="4"/> + </combo_box> <slider label="Maks. visnings-afstand:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -82,13 +76,12 @@ <text name="SkyMeshDetailText"> Lav </text> - <text name="LightingDetailText"> - Lys detaljer: + <text name="AvatarRenderingText"> + Avatar gengivelse </text> - <radio_group name="LightingDetailRadio"> - <radio_item label="Kun sol og mÃ¥ne" name="SunMoon" value="0"/> - <radio_item label="Lys i nærheden" name="LocalLights" value="1"/> - </radio_group> + <check_box initial_value="true" label="Mini-figurer pÃ¥ lang afstand" name="AvatarImpostors"/> + <check_box initial_value="true" label="Hardware Skinning" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Avatar tøj" name="AvatarCloth"/> <text name="TerrainDetailText"> Terræn detaljer: </text> @@ -96,6 +89,7 @@ <radio_item label="Lav" name="0"/> <radio_item label="Høj" name="2"/> </radio_group> + --> </panel> <button label="Benyt" label_selected="Benyt" name="Apply"/> <button label="Nulstil" name="Defaults"/> diff --git a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml index d3b3c7e21ec149075592841b080b3cc0fe734e71..cfb32500c6568c9db3fb8eac4195dea719169406 100644 --- a/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/da/panel_prim_media_controls.xml @@ -13,9 +13,9 @@ 50 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Medie hentes"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/da/panel_profile.xml b/indra/newview/skins/default/xui/da/panel_profile.xml index c5bfc3ae80e9010b35b958555b029bfd21b8c4a5..b2d1e9791ab666bd1d88bc743c1ff6ec5919667f 100644 --- a/indra/newview/skins/default/xui/da/panel_profile.xml +++ b/indra/newview/skins/default/xui/da/panel_profile.xml @@ -25,17 +25,29 @@ </panel> </scroll_container> </layout_panel> + </layout_stack> + <layout_stack name="layout_verb_buttons"> <layout_panel name="profile_buttons_panel"> - <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/> - <button label="IM" name="im" tool_tip="Ã…ben session med personlige beskeder (IM)"/> - <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/> - <button label="Kort" name="show_on_map_btn" tool_tip="Vis beboeren pÃ¥ kortet"/> - <button label="Teleport" name="teleport" tool_tip="Tilbyd teleport"/> - <button label="â–¼" name="overflow_btn" tool_tip="Betal penge til eller del beholdning med beboeren"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Tilføj ven" name="add_friend" tool_tip="Tilbyd venskab til beboeren"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="Personlig besked" name="im" tool_tip="Ã…ben session med personlig besked"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Opkald" name="call" tool_tip="Opkald til denne beboer"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleportér" name="teleport" tool_tip="Tilbyd teleport"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Betal eller del beholdning med denne beboer"/> + </layout_panel> + </layout_stack> </layout_panel> <layout_panel name="profile_me_buttons_panel"> <button label="Redigér profil" name="edit_profile_btn" tool_tip="Redigér din personlige information"/> - <button label="Redigér udseende" name="edit_appearance_btn" tool_tip="Opret/redigér dit udseende: fysiske data, tøj m.v."/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/da/panel_region_general_layout.xml b/indra/newview/skins/default/xui/da/panel_region_general_layout.xml deleted file mode 100644 index f3c32d6169732b2c54ff9a0a56945c50d83469fe..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/da/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?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> - <text name="region_type_lbl"> - Type: - </text> - <text name="region_type"> - ukendt - </text> - <check_box label="Blokér for redigering af terræn" name="block_terraform_check"/> - <check_box label="Blokér for flyvning" name="block_fly_check"/> - <check_box label="Tillad skader" name="allow_damage_check"/> - <check_box label="Begræns skubning" name="restrict_pushobject"/> - <check_box label="Tillad at sælge land" name="allow_land_resell_check"/> - <check_box label="Tillad at samle/dele land" name="allow_parcel_changes_check"/> - <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"/> - <spinner label="Max besøgende" name="agent_limit_spin"/> - <spinner label="Objekt bonus" name="object_bonus_spin"/> - <text label="Rating" name="access_text"> - Rating: - </text> - <combo_box label="Moderat" name="access_combo"> - <combo_box.item label="Voksent" name="Adult"/> - <combo_box.item label="Moderat" name="Mature"/> - <combo_box.item label="Generel" name="PG"/> - </combo_box> - <button label="Gem" name="apply_btn"/> - <button label="Teleportér en beboer hjem..." name="kick_btn"/> - <button label="Teleportér 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_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml index 5c0bd829d818d34dc23f6692234437a8ff08d333..ce3a1d8b4ef480904558778b6113eec9b149f3fc 100644 --- a/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/da/panel_side_tray_tab_caption.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="Side bjælke"/> + <button name="undock" tool_tip="Løsriv"/> + <button name="dock" tool_tip="Fastgør"/> <button name="show_help" tool_tip="Vis hjælp"/> </panel> diff --git a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml index 64ee3f04285e7ea3bc5a9fdbc1c911105a523aeb..b3293b981edb5cab589584fb857d621f93b8aa3f 100644 --- a/indra/newview/skins/default/xui/da/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_inventory.xml @@ -2,12 +2,20 @@ <panel label="Ting" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Profil" name="info_btn" tool_tip="Vis objekt profil"/> - <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> - <button label="Køb ind" name="shop_btn" tool_tip="Ã…ben hjemmeside for markedsplads"/> - <button label="Bær" name="wear_btn" tool_tip="Tag valgte sæt pÃ¥"/> - <button label="Afspil" name="play_btn"/> - <button label="Teleportér" name="teleport_btn" tool_tip="Teleport til det valgte omrÃ¥de"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="info_btn_lp"> + <button label="Profil" name="info_btn" tool_tip="Vis objektprofil"/> + </layout_panel> + <layout_panel name="share_btn_lp"> + <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> + </layout_panel> + <layout_panel name="shop_btn_lp"> + <button label="Butik" name="shop_btn" tool_tip="Ã…ben hjemmeside for markedsplads"/> + <button label="Tag pÃ¥" name="wear_btn" tool_tip="Tag det valgte sæt pÃ¥"/> + <button label="Afspil" name="play_btn"/> + <button label="Teleport" name="teleport_btn" tool_tip="Teleporter til valgte omrÃ¥de"/> + </layout_panel> + </layout_stack> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml index 2350af8d494593994f9a66566f23861db435abed..d52845160b6a7cb28ee2b74b79be745081777b2b 100644 --- a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml @@ -23,54 +23,53 @@ </panel.string> <text name="title" value="Profil for genstand"/> <text name="origin" value="(Beholdning)"/> - <panel label="" name="item_profile"> - <text name="LabelItemNameTitle"> - Navn: - </text> - <text name="LabelItemDescTitle"> - Beskrivelse: - </text> - <text name="LabelCreatorTitle"> - Skaber: - </text> - <button label="Profil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Ejer: - </text> - <button label="Profil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Anskaffet: - </text> - <text name="LabelAcquiredDate"/> - <panel name="perms_inv"> - <text name="perm_modify"> - Du kan: + <scroll_container name="item_profile_scroll"> + <panel label="" name="item_profile"> + <text name="LabelItemNameTitle"> + Navn: </text> - <check_box label="Redigere" name="CheckOwnerModify"/> - <check_box label="Kopiere" name="CheckOwnerCopy"/> - <check_box label="Overfør" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Alle: + <text name="LabelItemDescTitle"> + Beskrivelse: </text> - <check_box label="Kopiere" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Gruppe: + <text name="LabelCreatorTitle"> + Skaber: </text> - <check_box label="Del" name="CheckShareWithGroup" tool_tip="Giver alle medlemmer adgang til at give gruppen ret til at ændre rettigheder for dette objekt. Du skal dedikere for at Ã¥bne for rolle begrænsninger."/> - <text name="NextOwnerLabel"> - Næste ejer: + <text name="LabelOwnerTitle"> + Ejer: </text> - <check_box label="Redigere" name="CheckNextOwnerModify"/> - <check_box label="Kopiere" name="CheckNextOwnerCopy"/> - <check_box label="Overføre" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/> + <text name="LabelAcquiredTitle"> + Anskaffet: + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Du kan: + </text> + <check_box label="Redigere" name="CheckOwnerModify"/> + <check_box label="Kopi" name="CheckOwnerCopy"/> + <check_box label="Overføre" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Enhver: + </text> + <check_box label="Kopi" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Gruppe: + </text> + <check_box label="Del" name="CheckShareWithGroup" tool_tip="Tillader alle medlermmer af valgte gruppe at dele dine redigeringsrettigheder for dette objekt. Du skal vælge dedikere for at tildele rollerettigheder."/> + <text name="NextOwnerLabel"> + Næste ejer: + </text> + <check_box label="Redigér" name="CheckNextOwnerModify"/> + <check_box label="Kopiere" name="CheckNextOwnerCopy"/> + <check_box label="Overfør" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give dette objekt væk"/> + </panel> + <check_box label="Til salg" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Kopi" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Pris: L$" name="Edit Cost"/> </panel> - <check_box label="Til salg" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopi" name="Copy"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Pris: L$" name="Edit Cost"/> - </panel> + </scroll_container> <panel name="button_panel"> <button label="Annullér" name="cancel_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml index 712f6f8b504aab2867ae799b4d5dceb292ca1224..9f4119e73b28f3f9cea79a78b174d4974bb6d383 100644 --- a/indra/newview/skins/default/xui/da/strings.xml +++ b/indra/newview/skins/default/xui/da/strings.xml @@ -1264,6 +1264,9 @@ <string name="Right Pec"> Højre bryst </string> + <string name="Invalid Attachment"> + Ugyldig vedhæftningspunktt + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] gammel </string> @@ -1641,9 +1644,6 @@ <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD Nederst til højre </string> - <string name="Bad attachment point"> - Ugyldig fæste-punkt - </string> <string name="CursorPos"> Linie [LINE], Kolonne [COLUMN] </string> @@ -1659,12 +1659,6 @@ <string name="BusyModeResponseDefault"> Beboeren du sendte en besked er 'optaget', hvilket betyder at han/hun ikke vil forstyrres. Din besked vil blive vis i hans/hendes IM panel til senere visning. </string> - <string name="NoOutfits"> - You don't have any outfits yet. Try [secondlife:///app/search/all/ Search] - </string> - <string name="NoOutfitsTabsMatched"> - Fandt du ikke hvad du søgte? Prøv [secondlife:///app/search/all/[SEARCH_TERM] Search]. - </string> <string name="MuteByName"> (Efter navn) </string> @@ -1819,6 +1813,12 @@ Forventet .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="accel-win-shift"> Shift+ </string> + <string name="Esc"> + Esc + </string> + <string name="Home"> + Hjem + </string> <string name="FileSaved"> Fil gemt </string> @@ -3435,6 +3435,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="IM_moderator_label"> (Moderator) </string> + <string name="Saved_message"> + (Gemt [LONG_TIMESTAMP]) + </string> <string name="answered_call"> Dit opkald er blevet besvaret </string> @@ -3456,6 +3459,12 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE]. <string name="hang_up-im"> Forladt stemme opkald </string> + <string name="conference-title-incoming"> + Konference med [AGENT_NAME] + </string> + <string name="no_session_message"> + (IM session eksisterer ikke) + </string> <string name="only_user_message"> Du er den eneste deltager i denne samtale </string> @@ -3840,4 +3849,13 @@ Krænkelsesanmeldelse <string name="Chat"> Chat </string> + <string name="DeleteItems"> + Slet valgte genstande? + </string> + <string name="DeleteItem"> + Slet valgte genstand? + </string> + <string name="EmptyOutfitText"> + Der er ingen genstande i dette sæt + </string> </strings> diff --git a/indra/newview/skins/default/xui/de/floater_about.xml b/indra/newview/skins/default/xui/de/floater_about.xml index b18894d4782982c01eda853fe00d697410690ac9..d15ab105c2aed1a2a56a8fb916e5296c694e31fa 100644 --- a/indra/newview/skins/default/xui/de/floater_about.xml +++ b/indra/newview/skins/default/xui/de/floater_about.xml @@ -45,7 +45,7 @@ Voice-Serverversion: [VOICE_VERSION] <text_editor name="credits_editor"> Second Life wird Ihnen präsentiert von Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain und vielen anderen. -Wir bedanken uns bei folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan und vielen anderen. +Wir bedanken uns bei folgenden Einwohnern, die uns geholfen haben, dies zur bisher besten Version zu machen: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan und vielen anderen. diff --git a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml index d3f0d6d78f66322841cd9ff8f78c1ba82e5c6123..8f99fc933c269082329e3384fdec1707983e00ba 100644 --- a/indra/newview/skins/default/xui/de/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/de/floater_bulk_perms.xml @@ -43,7 +43,7 @@ Jeder: </text> <check_box label="Kopieren" name="everyone_copy"/> - <text name="NextOwnerLabel" top="160" left="10" width="200"> + <text name="NextOwnerLabel"> Nächster Eigentümer: </text> <check_box label="Bearbeiten" name="next_owner_modify"/> diff --git a/indra/newview/skins/default/xui/de/floater_customize.xml b/indra/newview/skins/default/xui/de/floater_customize.xml deleted file mode 100644 index 36515777978d50b9671122bc3c1f4f7e2b360724..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_customize.xml +++ /dev/null @@ -1,529 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="AUSSEHEN"> - <tab_container name="customize tab container"> - <text label="Körperteile" name="body_parts_placeholder"> - Körperteile - </text> - <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"/> - <radio_group name="sex radio"> - <radio_item label="Weiblich" name="radio" value="0"/> - <radio_item label="Männlich" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Form aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. - </text> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <text name="Item Action Label"> - Form: - </text> - <button label="Neue Form/Gestalt" label_selected="Neue Form/Gestalt" name="Create New"/> - <button font="SansSerifSmall" label="Speichern" label_selected="Speichern" name="Save"/> - <button font="SansSerifSmall" label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> - </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-Up" label_selected="Make-Up" left="2" name="Makeup" width="92"/> - <button label="Körperdetails" label_selected="Körperdetails" left="2" name="Body Detail" width="92"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Skin (Haut) aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. - </text> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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..." name="Save As"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie Haar aus dem Inventar auf Ihren Avatar, um dieses anzulegen. Sie können aber auch neues Haar erstellen und anlegen. - </text> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Augen" name="Eyes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie neue Augen aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch neue Augen erstellen und diese anlegen. - </text> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <text label="Kleidung" name="clothes_placeholder"> - Kleidung - </text> - <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 font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> - <button label="Neues Hemd" label_selected="Neues Hemd" 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie ein neues Hemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch ein neues Hemd erstellen und dieses anlegen. - </text> - <text name="no modify instructions"> - 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 font="SansSerifSmall" label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> - <button label="Neue Hose" label_selected="Neue Hose" 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Hose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anziehen. - </text> - <text name="no modify instructions"> - 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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie neue Schuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch neue Schuhe erstellen und diese anlegen. - </text> - <button label="Neue Schuhe" label_selected="Neue Schuhe" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Socken" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie neue Socken aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch neue erstellen und diese anziehen. - </text> - <button label="Neue Socken" label_selected="Neue Socken" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Jacke" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Jacke aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anziehen. - </text> - <button label="Neue Jacke" label_selected="Neue Jacke" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <text name="Item Action Label" right="100"> - Jacke: - </text> - <texture_picker label="Stoff: oben" name="Upper Fabric" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> - <texture_picker label="Stoff: unten" 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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Handschuhe" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie neue Handschuhe aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch neue erstellen und diese anziehen. - </text> - <button label="Neue Handschuhe" label_selected="Neue Handschuhe" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Unterhemd" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie ein neues Unterhemd aus dem Inventar auf Ihren Avatar, um dieses anzuziehen. Sie können aber auch ein neues Unterhemd erstellen und dieses anziehen. - </text> - <button label="Neues Unterhemd" label_selected="Neues Unterhemd" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Unterhose" name="Underpants"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Unterhose aus dem Inventar auf Ihren Avatar, um diese anzuziehen. Sie können aber auch eine neue erstellen und diese anziehen. - </text> - <button label="Neue Unterhose" label_selected="Neue Unterhose" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Rock" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [DESC]: wird geladen... - </text> - <text name="title_not_worn"> - [DESC]: nicht getragen - </text> - <text name="path"> - In [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie einen neuen Rock aus dem Inventar auf Ihren Avatar, um diesen anzuziehen. Sie können aber auch einen neuen Rock erstellen und diesen anziehen. - </text> - <button label="Neuer Rock" label_selected="Neuer Rock" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <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 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..." name="Save As"/> - <button font="SansSerifSmall" label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Tätowierung" name="Tattoo"> - <text name="title"> - Tätowierung - </text> - <text name="title_no_modify"> - [BESCHR]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [BESCHR]: wird geladen... - </text> - <text name="title_not_worn"> - [BESCHR]: nicht getragen - </text> - <text name="path"> - Befindet sich in [PATH] - </text> - <text name="not worn instructions"> - Ziehen Sie eine neue Tätowierung aus dem Inventar auf Ihren Avatar, um diese anzulegen. Sie können aber auch eine neue erstellen und diese anlegen. - </text> - <button label="Neue Tätowierung erstellen" label_selected="Neue Tätowierung erstellen" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <text name="Item Action Label"> - Tätowierung: - </text> - <texture_picker label="Kopftattoo" name="Head Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Obere Tattoos" name="Upper Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Untere Tattoos" name="Lower Tattoo" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> - <button label="Speichern" label_selected="Speichern" name="Save"/> - <button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> - <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - <panel label="Alpha" name="Alpha"> - <text name="title"> - Alpha - </text> - <text name="title_no_modify"> - [BESCHR]: bearbeiten nicht möglich - </text> - <text name="title_loading"> - [BESCHR]: wird geladen... - </text> - <text name="title_not_worn"> - [BESCHR]: nicht getragen - </text> - <text name="path"> - Befindet sich in [PATH] - </text> - <text name="not worn instructions"> - Sie können eine neue Alpha-Maske anlegen, indem Sie eine von Ihrem Inventar auf Ihren Avatar ziehen. Sie können aber auch eine neue erstellen und diese anlegen. - </text> - <button label="Neue Alpha erstellen" label_selected="Neue Alpha erstellen" name="Create New"/> - <text name="no modify instructions"> - Sie sind nicht berechtigt, diese Kleidung zu bearbeiten. - </text> - <text name="Item Action Label"> - Alpha: - </text> - <texture_picker label="Alpha: Unten" name="Lower Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Alpha: Oben" name="Upper Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Kopf: Alpha" name="Head Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Alpha: Augen" name="Eye Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <texture_picker label="Alpha: Haare" name="Hair Alpha" tool_tip="Zum Auswählen eines Bildes hier klicken"/> - <button label="Ausziehen" label_selected="Ausziehen" name="Take Off"/> - <button label="Speichern" label_selected="Speichern" name="Save"/> - <button label="Speichern unter..." label_selected="Speichern unter..." name="Save As"/> - <button label="Zurücksetzen" label_selected="Zurücksetzen" name="Revert"/> - </panel> - </tab_container> - <button label="Skriptinfo" label_selected="Skriptinfo" name="script_info" tool_tip="Skripts, die an Ihren Avatar angehängt sind, anzeigen"/> - <button label="Outfit erstellen" label_selected="Outfit erstellen" name="make_outfit_btn"/> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_device_settings.xml b/indra/newview/skins/default/xui/de/floater_device_settings.xml deleted file mode 100644 index 3d7e9c96c1abeecf2ea19bd072db0fa631c98852..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="EINSTELLUNGEN FÃœR VOICE-CHAT"/> diff --git a/indra/newview/skins/default/xui/de/floater_first_time_tip.xml b/indra/newview/skins/default/xui/de/floater_first_time_tip.xml deleted file mode 100644 index 9546cc2c42211236d10425e4070811615eade297..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_first_time_tip.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="set_name_in_the_cladd"> - <check_box label="Turn off Quick Tips" name="DontShowFirstTimeTip_checkbox"/> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_im.xml b/indra/newview/skins/default/xui/de/floater_im.xml deleted file mode 100644 index 8ae8f120cffb511ede8c051cdbdd73004bd9b1ed..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_im.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Instant Message"> - <string name="only_user_message"> - Sie sind der einzige Einwohner in dieser Sitzung. - </string> - <string name="offline_message"> - [FIRST] [LAST] ist offline. - </string> - <string name="invite_message"> - Klicken Sie auf [BUTTON NAME], um eine Verbindung zu diesem Voice-Chat herzustellen. - </string> - <string name="muted_message"> - Sie haben diesen Einwohner ignoriert. Wenn Sie eine Nachricht senden, wird dieser freigeschaltet. - </string> - <string name="generic_request_error"> - Fehler bei Anfrage, bitte versuchen Sie es später. - </string> - <string name="insufficient_perms_error"> - Sie sind dazu nicht berechtigt. - </string> - <string name="session_does_not_exist_error"> - Die Sitzung ist abgelaufen - </string> - <string name="no_ability_error"> - Sie besitzen diese Fähigkeit nicht. - </string> - <string name="not_a_mod_error"> - Sie sind kein Sitzungsmoderator. - </string> - <string name="muted_error"> - Ein Gruppenmoderator hat Ihren Text-Chat deaktiviert. - </string> - <!-- ALL of the event strings should have [RECIPIENT] in them --> - <string name="add_session_event"> - Es konnten keine Einwohner zur Chat-Sitzung mit [RECIPIENT] hinzugefügt werden. - </string> - <string name="message_session_event"> - Ihre Nachricht konnte nicht an die Chat-Sitzung mit [RECIPIENT] gesendet werden. - </string> - <string name="removed_from_group"> - Sie wurden von der Gruppe ausgeschlossen. - </string> - <string name="close_on_no_ability"> - Sie haben nicht mehr die Berechtigung an der Chat-Sitzung teilzunehmen. - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/de/floater_im_session.xml b/indra/newview/skins/default/xui/de/floater_im_session.xml index c69bb600eace1d73e22f377195ccde29c3766aee..abaf27565191c4bd18979ba083e76f8c802bbeb6 100644 --- a/indra/newview/skins/default/xui/de/floater_im_session.xml +++ b/indra/newview/skins/default/xui/de/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="IM Steuerkonsole" name="panel_im_control_panel"/> <layout_panel> <line_editor label="An" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/de/floater_my_friends.xml b/indra/newview/skins/default/xui/de/floater_my_friends.xml deleted file mode 100644 index 61cb0d5c1408e56ba0e1c3346b0d89d9fa0b28d0..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="KONTAKTE"> - <tab_container name="friends_and_groups"> - <panel label="Freunde" name="friends_panel"/> - <panel label="Gruppen" name="groups_panel"/> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml deleted file mode 100644 index 8c110e5516da99479c05b80577774172ee497e74..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Outfit speichern"> - <button label="Speichern" label_selected="Speichern" name="Save"/> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> - <text name="Save item as:"> - Meine aktuelle Kleidung -als neues Outfit speichern: - </text> - <line_editor name="name ed"> - [DESC] (neu) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_classified.xml b/indra/newview/skins/default/xui/de/floater_preview_classified.xml deleted file mode 100644 index 401758769d8fa4d39bcd38d64c6073d7541fe269..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMATIONEN ÃœBER ANZEIGE"> - <floater.string name="Title"> - Anzeige: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_event.xml b/indra/newview/skins/default/xui/de/floater_preview_event.xml deleted file mode 100644 index 7e46bbab546fb509ec4862a622efb5bb752a38aa..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="EVENT-INFORMATION"> - <floater.string name="Title"> - Veranstaltung: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml deleted file mode 100644 index 0d0d28f96fee2f4c1d77218e268f00d27ab46d37..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTE - SCHNELLTASTE"/> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml deleted file mode 100644 index 0b5df133951cf144fcff0a78df637a28c95d223c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTE - SCHNELLTASTE"> - <text name="trigger_label"> - Chat: - </text> - <text name="key_label"> - Tastatur: - </text> - <combo_box label="Keiner" name="modifier_combo"/> - <combo_box label="Keiner" name="key_combo"/> - <text name="replace_text" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."> - Ersetzen: - </text> - <line_editor name="replace_editor" tool_tip="Ersetzt den Auslösertext mit diesem Text. Wenn Sie zum Beispiel den Auslöser „hallo“ durch „wie geht's“ ersetzen, erscheint im Chat anstelle von „Ich wollte nur hallo sagen“ der Text „Ich wollte nur wie geht's sagen“ und die zugehörige Geste wird abgespielt."/> -</floater> diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml deleted file mode 100644 index 0d0d28f96fee2f4c1d77218e268f00d27ab46d37..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTE - SCHNELLTASTE"/> diff --git a/indra/newview/skins/default/xui/de/floater_statistics.xml b/indra/newview/skins/default/xui/de/floater_statistics.xml deleted file mode 100644 index 72a87a9566be69937d7fa892819aa4d68db05e80..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="STATISTIKEN"/> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 12ae9898c326e82ebdae21a63cc1a29150229408..3de3718f6628118791adf987d9a9032521a4d73f 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -71,8 +71,8 @@ <text label="Beide Seiten dehnen" name="checkbox uniform label"> Beide Seiten dehnen </text> - <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures"/> - <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid" top_pad="10"/> + <check_box initial_value="true" label="Texturen dehnen" name="checkbox stretch textures" top_pad="-5"/> + <check_box initial_value="true" label="An Raster ausrichten" name="checkbox snap to grid" top_pad="15"/> <combo_box name="combobox grid mode" tool_tip="Wählen Sie ein Rasterlineal zum Positionieren des Objekts aus."> <combo_box.item label="Globales Raster" name="World"/> <combo_box.item label="Lokales Raster" name="Local"/> diff --git a/indra/newview/skins/default/xui/de/floater_voice_controls.xml b/indra/newview/skins/default/xui/de/floater_voice_controls.xml index 07b7689cd0b49ada985d93cf35307493a57816fe..22f2fd93ab3e135e3a69f2a1bb9a6c8f51e17d27 100644 --- a/indra/newview/skins/default/xui/de/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/de/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mein Avatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Anruf beenden" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Anruf beenden" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml deleted file mode 100644 index f9b3552e8b04e23268dae65b6f622c3e6ec9f1b5..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=" "> - <button label="Speichern" label_selected="Speichern" name="Save"/> - <button label="Abbrechen" label_selected="Abbrechen" name="Cancel"/> - <text name="Save item as:"> - Objekt in meinem Inventar speichern als: - </text> - <line_editor name="name ed"> - Neu [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml index 160703bcf31cfd1c260dde5030e4672ae56b362e..c74f646abb4ddda093158d36f50581bffb55be83 100644 --- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> <menu_item_call label="Aufstehen" name="Stand Up"/> - <context_menu label="Ausziehen â–¶" name="Take Off >"> - <context_menu label="Kleidung â–¶" name="Clothes >"> + <context_menu label="Ausziehen" name="Take Off >"> + <context_menu label="Kleidung" name="Clothes >"> <menu_item_call label="Hemd" name="Shirt"/> <menu_item_call label="Hose" name="Pants"/> <menu_item_call label="Rock" name="Skirt"/> @@ -16,8 +16,8 @@ <menu_item_call label="Alpha" name="Self Alpha"/> <menu_item_call label="Alle Kleider" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Abnehmen â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Abnehmen" name="Object Detach"/> <menu_item_call label="Alles abnehmen" name="Detach All"/> </context_menu> <menu_item_call label="Outfit ändern" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml index 756b606d65f0c85c015561a560e4224c7c46889d..5003939fb64621473f9b3ba77d2dcbec65c25a2b 100644 --- a/indra/newview/skins/default/xui/de/menu_object.xml +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -10,12 +10,12 @@ <menu_item_call label="Aufstehen" name="Object Stand Up"/> <menu_item_call label="Objektprofil" name="Object Inspect"/> <menu_item_call label="Hineinzoomen" name="Zoom In"/> - <context_menu label="Anziehen â–¶" name="Put On"> + <context_menu label="Anziehen" name="Put On"> <menu_item_call label="Anziehen" name="Wear"/> - <context_menu label="Anhängen â–¶" name="Object Attach"/> - <context_menu label="HUD anhängen â–¶" name="Object Attach HUD"/> + <context_menu label="Anhängen" name="Object Attach"/> + <context_menu label="HUD anhängen" name="Object Attach HUD"/> </context_menu> - <context_menu label="Entfernen â–¶" name="Remove"> + <context_menu label="Entfernen" name="Remove"> <menu_item_call label="Missbrauch melden" name="Report Abuse..."/> <menu_item_call label="Ignorieren" name="Object Mute"/> <menu_item_call label="Zurückgeben" name="Return..."/> diff --git a/indra/newview/skins/default/xui/de/menu_participant_list.xml b/indra/newview/skins/default/xui/de/menu_participant_list.xml index d5281f0cb21a2fdbe2c6c090bbfa7600cb2449c5..160f2f97bed39b97e968c367ffaf79704d0f2474 100644 --- a/indra/newview/skins/default/xui/de/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/de/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="Symbole für Personen anzeigen" name="View Icons"/> <menu_item_check label="Voice ignorieren" name="Block/Unblock"/> <menu_item_check label="Text ignorieren" name="MuteText"/> - <context_menu label="Moderator-Optionen >" name="Moderator Options"> + <context_menu label="Moderator-Optionen" name="Moderator Options"> <menu_item_check label="Text-Chat zulassen" name="AllowTextChat"/> <menu_item_call label="Diesen Teilnehmer stummschalten" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Stummschaltung für diesen Teilnehmer aufheben" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml index 6c8fc69fc074de60cad80f847e20f29e2f7489e3..283e454a0647b72b3c9527ba00edc61d4ab5599c 100644 --- a/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/de/menu_wearable_list_item.xml @@ -5,8 +5,8 @@ <menu_item_call label="Hinzufügen" name="wear_add"/> <menu_item_call label="Ausziehen / Abnehmen" name="take_off_or_detach"/> <menu_item_call label="Abnehmen" name="detach"/> - <context_menu label="Anhängen an â–¶" name="wearable_attach_to"/> - <context_menu label="An HUD hängen â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Anhängen an" name="wearable_attach_to"/> + <context_menu label="An HUD hängen" name="wearable_attach_to_hud"/> <menu_item_call label="Ausziehen" name="take_off"/> <menu_item_call label="Bearbeiten" name="edit"/> <menu_item_call label="Objektprofil" name="object_profile"/> diff --git a/indra/newview/skins/default/xui/de/panel_audio_device.xml b/indra/newview/skins/default/xui/de/panel_audio_device.xml deleted file mode 100644 index 6ecd1f0241d03ab1505e3236a1ca73b0e37e5342..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="device_settings"> - <text name="Audio Devices"> - Audiogeräte - </text> - <text name="Output device (speakers):"> - Ausgabegerät (Lautsprecher): - </text> - <text name="Input device (microphone):"> - Eingabegerät (Mikro): - </text> - <text name="Input level:"> - Eingangslautstärke - </text> - <text_editor name="voice_intro_text1"> - Mit dem Regler steuern Sie, wie laut andere Einwohner Sie hören. Testen Sie die Eingangslautstärke, indem Sie in das Mikro sprechen. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Ändern Sie die Lautstärke mit dem Regler" /> - <text name="wait_text"> - Bitte warten - </text> - <text name="default_text"> - Standard - </text> -</panel> diff --git a/indra/newview/skins/default/xui/de/panel_friends.xml b/indra/newview/skins/default/xui/de/panel_friends.xml deleted file mode 100644 index 50013a2b240c0adb6de9e3a47748b678236004a3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_friends.xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Mehrere Freunde - </string> - <scroll_list name="friend_list" tool_tip="Halten Sie die Tasten „Umschalt“ oder „Strg“ gedrückt, um durch Klicken mehrere Freunde auszuwählen."> - <column name="icon_online_status" tool_tip="Online-Status"/> - <column label="Name" name="friend_name" tool_tip="Name"/> - <column name="icon_visible_online" tool_tip="Freund kann sehen, wenn Sie online sind"/> - <column name="icon_visible_map" tool_tip="Freund kann Sie auf der Karte finden"/> - <column name="icon_edit_mine" tool_tip="Freunde können Objekte bearbeiten, löschen und an sich nehmen"/> - <column name="icon_edit_theirs" tool_tip="Sie können die Objekte dieses Freunds bearbeiten"/> - </scroll_list> - <panel name="rights_container"> - <text name="friend_name_label"> - Wählen Sie den/die Freund(e) aus, dessen/deren Rechte Sie ändern möchten... - </text> - <check_box label="Kann meinen Online-Status sehen" name="online_status_cb" tool_tip="Festlegen, ob dieser Freund meinen Online-Status auf seiner Freundesliste oder Visitenkarte einsehen kann"/> - <check_box label="Kann mich auf der Weltkarte sehen" name="map_status_cb" tool_tip="Festlegen, ob dieser Freund auf seiner Karte meinen Standort sehen kann"/> - <check_box label="Kann meine Objekte verändern" name="modify_status_cb" tool_tip="Festlegen, ob dieser Freund meine Objekte verändern kann"/> - <text name="process_rights_label"> - Rechte werden geändert... - </text> - </panel> - <button label="IM/Anruf" name="im_btn" tool_tip="Beginnt eine Instant Message-Sitzung"/> - <button label="Profil" name="profile_btn" tool_tip="Bilder, Gruppen und andere Informationen anzeigen"/> - <button label="Teleportieren" name="offer_teleport_btn" tool_tip="Bieten Sie diesem Freund einen Teleport an Ihre Position an"/> - <button label="Bezahlen" name="pay_btn" tool_tip="Diesem Freund Linden-Dollar (L$) geben"/> - <button label="Entfernen" name="remove_btn" tool_tip="Diese Person von Ihrer Freundesliste entfernen"/> - <button label="Hinzufügen" name="add_btn" tool_tip="Bieten Sie einem Einwohner die Freundschaft an"/> -</panel> diff --git a/indra/newview/skins/default/xui/de/panel_groups.xml b/indra/newview/skins/default/xui/de/panel_groups.xml deleted file mode 100644 index f857a6c7ac39980cb11a34e84667f86e4aa7c825..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_groups.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="groups"> - <text name="groupdesc" width="300"> - Die derzeit aktive Gruppe ist fett hervorgehoben. - </text> - <text name="groupcount" width="360"> - Sie sind Mitglied bei [COUNT] Gruppen (von max. [MAX]). - </text> - <button label="IM/Anruf" name="IM" tool_tip="Beginnt eine Instant Message-Sitzung" /> - <button label="Info" name="Info" /> - <button label="Aktivieren" name="Activate" /> - <button label="Verlassen" name="Leave" /> - <button label="Erstellen..." name="Create" /> - <button label="Suchen..." name="Search..." /> -</panel> diff --git a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml b/indra/newview/skins/default/xui/de/panel_nearby_chat.xml deleted file mode 100644 index 3f4f5a71b58088ddd07954ce45842f3b13b73326..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name" width="200"> - CHAT IN DER NÄHE - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/de/panel_notifications_channel.xml b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml index e2166f7baf77fb6e5c2e4e297bc1f98b7ab75091..35bd76ce7099e396c1ca34a29cb6251d7bf9a27e 100644 --- a/indra/newview/skins/default/xui/de/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/de/panel_notifications_channel.xml @@ -1,15 +1,19 @@ <?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_panel name="notifications_list_panel" > + <scroll_list name="notifications_list"> + <column label="Name" name="name"/> + <column label="Inhalt" name="content"/> + <column label="Datum" name="date"/> + </scroll_list> + </layout_panel> + <layout_panel name="rejects_list_panel" > + <scroll_list name="notification_rejects_list"> + <column label="Name" name="name"/> + <column label="Inhalt" name="content"/> + <column label="Datum" name="date"/> + </scroll_list> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_online_status.xml b/indra/newview/skins/default/xui/de/panel_online_status.xml deleted file mode 100644 index 7c7448c06117cf11ea2a32a8b2535cd398fb2f22..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Freunde_online_Status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml index 0a19483f8b7078827a2946023dd9c3a9a21e101c..c85f2762b124f1c526cabf73074bc319926c9208 100644 --- a/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/de/panel_prim_media_controls.xml @@ -7,9 +7,9 @@ 0.2 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Medien werden geladen"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml b/indra/newview/skins/default/xui/de/panel_region_general_layout.xml deleted file mode 100644 index 09142ada6f7209f2a00b583e61394705523e1bd5..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/de/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?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"> - unbekannt - </text> - <text name="version_channel_text_lbl"> - Version: - </text> - <text name="version_channel_text"> - unbekannt - </text> - <text name="region_type_lbl"> - Typ: - </text> - <text name="region_type"> - unbekannt - </text> - <check_box label="Terraformen blockieren" name="block_terraform_check"/> - <check_box label="Fliegen blockieren" name="block_fly_check"/> - <check_box label="Schaden zulassen" name="allow_damage_check"/> - <check_box label="Stoßen beschränken" name="restrict_pushobject"/> - <check_box label="Landwiederverkauf zulassen" name="allow_land_resell_check"/> - <check_box label="Zusammenlegen/Teilen von Land zulassen" name="allow_parcel_changes_check"/> - <check_box label="Landanzeige in Suche blockieren" name="block_parcel_search_check" tool_tip="Diese Region und ihre Parzellen in Suchergebnissen anzeigen"/> - <spinner label="Avatar-Limit" name="agent_limit_spin"/> - <spinner label="Objektbonus" name="object_bonus_spin"/> - <text label="Alterseinstufung" name="access_text"> - Einstufung: - </text> - <combo_box label="Moderat" name="access_combo"> - <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Moderat" name="Mature"/> - <combo_box.item label="Allgemein" name="PG"/> - </combo_box> - <button label="Ãœbernehmen" name="apply_btn"/> - <button label="Einen Einwohner nach Hause teleportieren..." name="kick_btn"/> - <button label="Alle Einwohner 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/en/alert_check_box.xml b/indra/newview/skins/default/xui/en/alert_check_box.xml index 9f1bdb51939f7c8f9b518ad9c5221daee6b6793c..5535a5dc2ae56478a29e744c99708a3de595cb9f 100644 --- a/indra/newview/skins/default/xui/en/alert_check_box.xml +++ b/indra/newview/skins/default/xui/en/alert_check_box.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <check_box - text_enabled_color="LabelTextColor" - text_disabled_color="LabelDisabledColor" + label_text.text_color="LabelTextColor" + label_text.text_readonly_color="LabelDisabledColor" font="SansSerif" follows="left|top" name="check"/> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/favorites_bar_button.xml b/indra/newview/skins/default/xui/en/favorites_bar_button.xml index b365040c2028838ef583991af18a8a06d0ddbfcf..e7dd62eb6427aa57e3a8a57af92f3108478661cc 100644 --- a/indra/newview/skins/default/xui/en/favorites_bar_button.xml +++ b/indra/newview/skins/default/xui/en/favorites_bar_button.xml @@ -22,6 +22,6 @@ pad_right="9" scale_image="true" tab_stop="false" - top="0" + bottom="0" use_ellipses="true" width="140" /> diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index cae61468804f17ebf84fd7effd0a3ab85d8d97a2..930bbaa8cb10b74b80ce297f27bd71d56649c7fb 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -20,7 +20,7 @@ <string name="nudge_parabuild" translate="false">Nudge 1</string> <string name="test_the_vlt">This string CHANGE2 is extracted.</string> <string name="testing_eli">Just a test. changes.</string> - <chat_history + <text_editor parse_urls="true" bg_readonly_color="ChatHistoryBgColor" bg_writeable_color="ChatHistoryBgColor" @@ -32,26 +32,51 @@ layout="topleft" height="260" name="chat_history" + max_length="200000" parse_highlights="true" text_color="ChatHistoryTextColor" text_readonly_color="ChatHistoryTextColor" translate="false" + track_end="true" + wrap="true" width="320"> -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. -Really long line that is long enough to wrap once with jyg descenders. - </chat_history> + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + Really long line that is long enough to wrap once with jyg descenders. + </text_editor> </floater> diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index f4d65bdb3aadde2659ca38cbef70cc067f394cb0..f5365be11f50a4552b2f8bc4177359578f3948ea 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -112,7 +112,7 @@ Packets Lost: [PACKETS_LOST,number,0]/[PACKETS_IN,number,0] ([PACKETS_PCT,number word_wrap="true"> Second Life is brought to you by Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others. -Thank you to the following Residents for helping to ensure that this is the best version yet: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. +Thank you to the following Residents for helping to ensure that this is the best version yet: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index d007ceff984eed1da2d15ea1eb512413354f49ed..457142f11c812fd14f24a4cda2b72c988c9011d7 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -7,7 +7,7 @@ name="floaterbulkperms" help_topic="floaterbulkperms" title="EDIT CONTENT PERMISSIONS" - width="270"> + width="300"> <floater.string name="nothing_to_modify_text"> Selection contains no editable contents. @@ -164,7 +164,7 @@ label="√ All" left="180" top="26" - width="70"> + width="115"> <button.commit_callback function="BulkPermission.CheckAll" /> </button> @@ -176,7 +176,7 @@ layout="topleft" top_pad="8" name="check_none" - width="70" > + width="115" > <button.commit_callback function="BulkPermission.UncheckAll"/> </button> @@ -199,10 +199,11 @@ length="1" follows="left|top" layout="topleft" - height="16" + height="28" left="10" name="GroupLabel" - width="88"> + width="92" + word_wrap="true"> Group: </text> <check_box @@ -212,17 +213,18 @@ layout="topleft" top_pad="0" name="share_with_group" - width="88" /> + width="92" /> <text type="string" length="1" follows="left|top" - height="16" + height="28" layout="topleft" name="AnyoneLabel" - left="100" + left="104" top="110" - width="88"> + width="92" + word_wrap="true"> Anyone: </text> <check_box @@ -232,17 +234,18 @@ layout="topleft" top_pad="0" name="everyone_copy" - width="88" /> + width="92" /> <text type="string" length="1" follows="left|top" - height="16" + height="28" layout="topleft" name="NextOwnerLabel" top="110" - left="185" - width="88"> + left="189" + width="92" + word_wrap="true"> Next owner: </text> <check_box @@ -252,7 +255,7 @@ layout="topleft" name="next_owner_modify" top_pad="0" - width="83" /> + width="92" /> <check_box control_name="BulkChangeNextOwnerCopy" height="16" @@ -260,7 +263,7 @@ layout="topleft" top_pad="0" name="next_owner_copy" - width="88"> + width="92"> <check_box.commit_callback function="BulkPermission.CommitCopy"/> </check_box> @@ -274,7 +277,7 @@ layout="topleft" name="next_owner_transfer" tool_tip="Next owner can give away or resell this object" - width="106" /> + width="92" /> <scroll_list enabled="false" follows="all" @@ -289,7 +292,7 @@ height="23" label="OK" layout="topleft" - left="65" + left="95" name="apply" top_pad="10" width="90"> diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml index 4b990fa566021733f14714fc215b38b3d5a46194..b9c415633f929d2ad7f5254f902a65d7c13fd795 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency_html.xml @@ -16,6 +16,7 @@ https://quick-buy.secondlife.com/[LANGUAGE]/display/?sa=[SPECIFIC_AMOUNT]&sum=[SUM]&msg=[MSG]&bal=[BAL] </floater.string> <web_browser + trusted_content="true" follows="all" layout="topleft" left="1" diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml deleted file mode 100644 index 01bced81d062392651f135069dbe491b1382eedd..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ /dev/null @@ -1,3389 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_minimize="false" - follows="left|top" - height="583" - layout="topleft" - left_delta="-3" - name="floater customize" - help_topic="floater_customize" - save_rect="true" - title="APPEARANCE" - top_delta="-185" - width="600"> - <tab_container - height="517" - layout="topleft" - left="10" - name="customize tab container" - tab_min_width="96" - tab_position="left" - tab_height="50" - top="26" - width="580"> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="5" - name="body_parts_placeholder" - font="SansSerifSmallBold" - top="10" - width="100"> - Body Parts - </text> - <placeholder /> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Shape" - layout="topleft" - name="Shape" - help_topic="customize_shape_tab" - width="400"> - <icon - follows="top|right" - height="18" - image_name="Lock" - layout="topleft" - left="315" - mouse_opaque="true" - name="square" - top="4" - width="18" /> - <icon - height="16" - top="10" - left="10" - layout="topleft" - mouse_opaque="true" - width="16" /> - <button - follows="left|top" - height="23" - label="Create New Shape" - label_selected="Create New Shape" - layout="topleft" - left="10" - name="Create New" - top="104" - width="160" /> - <button - follows="left|top" - height="23" - label="Body" - label_selected="Body" - layout="topleft" - left="10" - name="Body" - top="63" - width="82" /> - <button - follows="left|top" - height="23" - label="Head" - label_selected="Head" - layout="topleft" - left_delta="0" - name="Head" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Eyes" - label_selected="Eyes" - layout="topleft" - left_delta="0" - name="Eyes" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Ears" - label_selected="Ears" - layout="topleft" - left_delta="0" - name="Ears" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Nose" - label_selected="Nose" - layout="topleft" - left_delta="0" - name="Nose" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Mouth" - label_selected="Mouth" - layout="topleft" - left_delta="0" - name="Mouth" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Chin" - label_selected="Chin" - layout="topleft" - left_delta="0" - name="Chin" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Torso" - label_selected="Torso" - layout="topleft" - left_delta="0" - name="Torso" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Legs" - label_selected="Legs" - layout="topleft" - left_delta="0" - name="Legs" - top_pad="4" - width="82" /> - <radio_group - control_name="AvatarSex" - height="34" - layout="topleft" - name="sex radio" - top_pad="10" - width="82"> - <radio_item - height="16" - label="Female" - layout="topleft" - name="radio" - value="0" - width="82" /> - <radio_item - height="16" - label="Male" - layout="topleft" - name="radio2" - value="1" - width="82" /> - </radio_group> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <text - type="string" - length="1" - top="488" - follows="left|top" - font="SansSerif" - halign="right" - height="23" - layout="topleft" - left="10" - name="Item Action Label" - width="130"> - Shape: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - name="Save" - left_pad="2" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - name="Save As" - top="477" - left_pad="3" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Skin" - layout="topleft" - name="Skin" - help_topic="customize_skin_tab" - width="400"> - <icon - follows="top|right" - height="18" - image_name="Lock" - layout="topleft" - left="315" - mouse_opaque="true" - name="square" - top="4" - width="18" /> - <icon - height="16" - top="10" - left="10" - layout="topleft" - mouse_opaque="true" - width="16" /> - <button - follows="left|top" - height="23" - label="Create New Skin" - label_selected="Create New Skin" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-249" - width="160" /> - <button - follows="left|top" - height="23" - label="Skin Color" - label_selected="Skin Color" - layout="topleft" - left="10" - name="Skin Color" - top="63" - width="82" /> - <button - follows="left|top" - height="23" - label="Face Detail" - label_selected="Face Detail" - layout="topleft" - left_delta="0" - name="Face Detail" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Makeup" - label_selected="Makeup" - layout="topleft" - left_delta="0" - name="Makeup" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Body Detail" - label_selected="Body Detail" - layout="topleft" - left_delta="0" - name="Body Detail" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - allow_no_texture="true" - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Head Tattoos" - layout="topleft" - left="10" - name="Head Tattoos" - tool_tip="Click to choose a picture" - top="176" - width="82" /> - <texture_picker - allow_no_texture="true" - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Upper Tattoos" - layout="topleft" - left_delta="0" - name="Upper Tattoos" - tool_tip="Click to choose a picture" - top_delta="102" - width="82" /> - <texture_picker - allow_no_texture="true" - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Lower Tattoos" - layout="topleft" - left_delta="0" - name="Lower Tattoos" - tool_tip="Click to choose a picture" - top_delta="102" - width="82" /> - <text - type="string" - length="1" - top="488" - follows="left|top" - font="SansSerif" - halign="right" - height="23" - layout="topleft" - left="10" - name="Item Action Label" - width="130"> - Skin: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Hair" - layout="topleft" - name="Hair" - help_topic="customize_hair_tab" - width="400"> - <icon - follows="top|right" - height="18" - image_name="Lock" - layout="topleft" - left="315" - mouse_opaque="true" - name="square" - top="4" - width="18" /> - <icon - height="16" - top="10" - left="10" - layout="topleft" - mouse_opaque="true" - width="16" /> - <button - follows="left|top" - height="23" - label="Color" - label_selected="Color" - layout="topleft" - left="10" - name="Color" - top="63" - width="82" /> - <button - follows="left|top" - height="23" - label="Style" - label_selected="Style" - layout="topleft" - left_delta="0" - name="Style" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Eyebrows" - label_selected="Eyebrows" - layout="topleft" - name="Eyebrows" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Facial" - label_selected="Facial" - layout="topleft" - name="Facial" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Texture" - layout="topleft" - left="10" - name="Texture" - tool_tip="Click to choose a picture" - top="176" - width="82" /> - <button - follows="left|top" - height="23" - label="Create New Hair" - label_selected="Create New Hair" - layout="topleft" - left_delta="0" - name="Create New" - top_delta="-89" - width="160" /> - <text - type="string" - length="1" - top="488" - follows="left|top" - font="SansSerif" - halign="right" - height="23" - layout="topleft" - name="Item Action Label" - left="10" - width="130"> - Hair: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Eyes" - layout="topleft" - name="Eyes" - help_topic="customize_eyes_tab" - width="400"> - <icon - follows="top|right" - height="18" - image_name="Lock" - layout="topleft" - left="315" - mouse_opaque="true" - name="square" - top="4" - width="18" /> - <icon - height="16" - top="10" - left="10" - layout="topleft" - mouse_opaque="true" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on a new set of 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Iris" - layout="topleft" - left="10" - name="Iris" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <button - follows="left|top" - height="23" - label="Create New Eyes" - label_selected="Create New Eyes" - layout="topleft" - name="Create New" - top="66" - width="160" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - name="Item Action Label" - left="10" - width="130"> - Eyes: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="5" - name="clothes_placeholder" - font="SansSerifSmallBold" - top="125" - width="100"> - Clothes - </text> - <placeholder /> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Shirt" - layout="topleft" - name="Shirt" - help_topic="customize_shirt_tab" - top_delta="0" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - top="10" - left="10" - layout="topleft" - mouse_opaque="true" - width="16" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Create New Shirt" - label_selected="Create New Shirt" - layout="topleft" - name="Create New" - top="66" - width="160" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - name="Item Action Label" - left="10" - width="130"> - Shirt: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top" - height="16" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Pants" - layout="topleft" - name="Pants" - help_topic="customize_pants_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <button - follows="left|top" - height="23" - label="Create New Pants" - label_selected="Create New Pants" - layout="topleft" - name="Create New" - top="66" - width="160" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - name="Item Action Label" - left="10" - width="130"> - Pants: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on 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="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Shoes" - layout="topleft" - name="Shoes" - help_topic="customize_shoes_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on a new pair of shoes by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. - </text> - <button - follows="left|top" - height="23" - label="Create New Shoes" - label_selected="Create New Shoes" - layout="topleft" - name="Create New" - top_pad="18" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Shoes: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Socks" - layout="topleft" - name="Socks" - help_topic="customize_socks_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on new socks by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. - </text> - <button - follows="left|top" - height="23" - label="Create New Socks" - label_selected="Create New Socks" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Socks: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Jacket" - layout="topleft" - name="Jacket" - help_topic="customize_jacket_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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> - <button - follows="left|top" - height="23" - label="Create New Jacket" - label_selected="Create New Jacket" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Upper Fabric" - layout="topleft" - left="10" - name="Upper Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Lower Fabric" - layout="topleft" - name="Lower Fabric" - tool_tip="Click to choose a picture" - top_delta="102" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Jacket: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Gloves" - layout="topleft" - name="Gloves" - help_topic="customize_gloves_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on new gloves by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. - </text> - <button - follows="left|top" - height="23" - label="Create New Gloves" - label_selected="Create New Gloves" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Gloves: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Undershirt" - layout="topleft" - name="Undershirt" - help_topic="customize_undershirt_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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> - <button - follows="left|top" - height="23" - label="Create New Undershirt" - label_selected="Create New Undershirt" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Undershirt: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Underpants" - layout="topleft" - name="Underpants" - help_topic="customize_underpants_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - width="373"> - Put on new underpants by dragging one from your inventory to your avatar. Alternately, you create a new one from scratch and wear it. - </text> - <button - follows="left|top" - height="23" - label="Create New Underpants" - label_selected="Create New Underpants" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Underpants: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Skirt" - layout="topleft" - name="Skirt" - help_topic="customize_skirt_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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> - <button - follows="left|top" - height="23" - label="Create New Skirt" - label_selected="Create New Skirt" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Fabric" - layout="topleft" - left="10" - name="Fabric" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <color_swatch - can_apply_immediately="true" - follows="left|top" - height="108" - label="Color/Tint" - layout="topleft" - name="Color/Tint" - tool_tip="Click to open color picker" - top_delta="102" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Skirt: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Tattoo" - layout="topleft" - name="Tattoo" - help_topic="customize_tattoo_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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> - <button - follows="left|top" - height="23" - label="Create New Tattoo" - label_selected="Create New Tattoo" - layout="topleft" - name="Create New" - top_pad="7" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Head Tattoo" - layout="topleft" - left="10" - name="Head Tattoo" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Upper Tattoo" - layout="topleft" - name="Upper Tattoo" - tool_tip="Click to choose a picture" - left_delta="90" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Lower Tattoo" - layout="topleft" - name="Lower Tattoo" - tool_tip="Click to choose a picture" - left_delta="90" - width="82" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - top_pad="4" - left="10" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Tattoo: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - <panel - border="false" - background_visible="true" - bg_alpha_color="DkGray2" - follows="left|top|right|bottom" - height="508" - label="Alpha" - layout="topleft" - name="Alpha" - help_topic="customize_alpha_tab" - width="400"> - <icon - follows="top|left" - height="18" - image_name="Lock" - layout="topleft" - left="10" - mouse_opaque="true" - name="square" - top="10" - width="18" /> - <icon - height="16" - layout="topleft" - left="10" - mouse_opaque="true" - top="10" - width="16" /> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title" - top="10" - width="355"> - [DESC] - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_no_modify" - top="10" - width="355"> - [DESC]: cannot modify - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_loading" - top="10" - width="355"> - [DESC]: loading... - </text> - <text - type="string" - length="1" - follows="left|top|right" - font="SansSerif" - height="16" - layout="topleft" - left="31" - name="title_not_worn" - top="10" - width="355"> - [DESC]: not worn - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="14" - layout="topleft" - left="10" - name="path" - top="36" - width="373"> - Located in [PATH] - </text> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="not worn instructions" - top="31" - word_wrap="true" - 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> - <button - follows="left|top" - height="23" - label="Create New Alpha" - label_selected="Create New Alpha" - layout="topleft" - name="Create New" - top_pad="18" - width="160" /> - <text - type="string" - length="1" - follows="left|top|right" - height="28" - layout="topleft" - left="10" - name="no modify instructions" - top="31" - word_wrap="true" - width="373"> - You do not have permission to modify this wearable. - </text> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Lower Alpha" - layout="topleft" - left="10" - name="Lower Alpha" - tool_tip="Click to choose a picture" - top="66" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Upper Alpha" - layout="topleft" - name="Upper Alpha" - tool_tip="Click to choose a picture" - left_delta="90" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Head Alpha" - layout="topleft" - name="Head Alpha" - tool_tip="Click to choose a picture" - left_delta="90" - width="82" /> - <check_box - control_name="LowerAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left="43" - name="lower alpha texture invisible" - top_delta="96" - width="16" /> - <check_box - control_name="UpperAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="72" - name="upper alpha texture invisible" - width="16" /> - <check_box - control_name="HeadAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="72" - name="head alpha texture invisible" - width="16" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Eye Alpha" - layout="topleft" - name="Eye Alpha" - tool_tip="Click to choose a picture" - left="10" - top_pad="20" - width="82" /> - <texture_picker - can_apply_immediately="true" - default_image_name="Default" - follows="left|top" - height="108" - label="Hair Alpha" - layout="topleft" - name="Hair Alpha" - left_delta="90" - tool_tip="Click to choose a picture" - width="82" /> - <check_box - control_name="Eye AlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left="43" - name="eye alpha texture invisible" - top_delta="96" - width="16" /> - <check_box - control_name="HairAlphaTextureInvisible" - follows="left" - height="16" - layout="topleft" - left_pad="72" - name="hair alpha texture invisible" - width="16" /> - <button - follows="left|top" - height="23" - label="Take Off" - label_selected="Take Off" - layout="topleft" - name="Take Off" - left="10" - top_pad="20" - width="82" /> - <text - type="string" - length="1" - bottom="4" - follows="left|bottom" - font="SansSerif" - halign="right" - height="23" - layout="bottomleft" - left="10" - name="Item Action Label" - width="130"> - Alpha: - </text> - <button - follows="left|bottom" - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left_pad="2" - name="Save" - top="477" - width="82" /> - <button - follows="left|bottom" - height="23" - label="Save As..." - label_selected="Save As..." - layout="topleft" - left_pad="3" - name="Save As" - top="477" - width="115" /> - <button - follows="left|bottom" - height="23" - label="Revert" - label_selected="Revert" - layout="topleft" - left_pad="3" - name="Revert" - top="477" - width="120" /> - </panel> - </tab_container> - <scroll_container - follows="left|top|right|bottom" - height="409" - layout="topleft" - left="247" - mouse_opaque="false" - name="panel_container" - top="92" - width="330"> - <scrolling_panel_list - follows="left|bottom" - layout="topleft" - name="panel_list" /> - </scroll_container> - <button - bottom="460" - follows="right|left" - height="23" - label="Script Info" - label_selected="Script Info" - layout="topleft" - name="script_info" - tool_tip="Show scripts attached to your avatar" - left="13" - width="90" ></button> - <button - bottom="574" - follows="right|bottom" - height="23" - label="Make Outfit" - label_selected="Make Outfit" - layout="topleft" - name="make_outfit_btn" - right="-218" - width="120" /> - <button - bottom="574" - follows="right|bottom" - height="23" - label="Cancel" - label_selected="Cancel" - layout="topleft" - name="Cancel" - right="-10" - width="100" /> - <button - bottom="574" - follows="right|bottom" - height="23" - label="OK" - label_selected="OK" - layout="topleft" - name="Ok" - right="-114" - width="100" /> -</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 deleted file mode 100644 index 91a7a678da1f7d4d2d50b794b90b28803efcd3ac..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_device_settings.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - height="260" - layout="topleft" - name="floater_device_settings" - help_topic="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_first_time_tip.xml b/indra/newview/skins/default/xui/en/floater_first_time_tip.xml deleted file mode 100644 index e4ac8fed77afc45e1bb354b80c0b06145582b916..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_first_time_tip.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_close="true" - can_minimize="false" - height="250" - layout="topleft" - name="set_name_in_the_cladd" - help_topic="set_name_in_the_cladd" - save_rect="true" - width="300"> - <check_box - height="20" - follows="left|bottom|right" - label="Turn off Quick Tips" - layout="topleft" - left="5" - name="DontShowFirstTimeTip_checkbox" - text_enabled_color="white" - top="225" - width="200" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index 214fb6ce54df615b975e01ad2f1816f0336d38f0..837923bcf606c48dce7a36eb858eda8d2e36e324 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -24,6 +24,7 @@ follows="left|right|top|bottom" layout="topleft" left="5" + orientation="vertical" name="stack1" top="20" width="640"> @@ -35,7 +36,8 @@ user_resize="false" width="620"> <web_browser - bottom="-11" + trusted_content="true" + bottom="-25" follows="left|right|top|bottom" layout="topleft" left="0" diff --git a/indra/newview/skins/default/xui/en/floater_im.xml b/indra/newview/skins/default/xui/en/floater_im.xml deleted file mode 100644 index 55efe83820c07c41315c4ced38755ac81d7e466b..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_im.xml +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<multi_floater - legacy_header_height="18" - can_resize="true" - follows="left|bottom" - height="422" - layout="topleft" - min_height="130" - min_width="350" - name="im_floater" - help_topic="im_floater" - save_rect="true" - title="Instant Message" - width="419"> - <multi_floater.string - name="only_user_message"> - You are the only Resident 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 blocked this Resident. Sending a message will automatically unblock 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 Residents 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_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 6c1214f15220c6fbcb5818e65e7489eef354a668..a371e9832278914486f2e318ea1bf51a04d7292b 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -30,12 +30,19 @@ top="20" left="0"> <layout_panel - name="panel_im_control_panel" - layout="topleft" - follows="left" - min_width="115" + name="im_control_panel_holder" + min_width="115" + width="150" + height="320" auto_resize="false" - user_resize="true" /> + user_resize="false"> + <panel + name="panel_im_control_panel" + layout="topleft" + height="320" + width="150" + follows="all"/> + </layout_panel> <layout_panel default_tab_group="3" left="0" diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index c02d6075866ab69c720d1dcae353d92c9316d122..49e835cce4d8cb1b79b7dcc3331ee8f19d8fddad 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -9,7 +9,7 @@ name="floater_about" help_topic="floater_about" save_rect="true" - single_instance="true" + auto_tile="true" title="MEDIA BROWSER" width="820"> <floater.string @@ -26,13 +26,16 @@ layout="topleft" left="10" name="stack1" + orientation="vertical" top="20" width="800"> <layout_panel auto_resize="false" + default_tab_group="1" height="20" layout="topleft" left="0" + min_height="20" name="nav_controls" top="400" user_resize="false" @@ -77,11 +80,13 @@ <combo_box allow_text_entry="true" follows="left|top|right" + tab_group="1" height="20" layout="topleft" left_pad="5" max_chars="1024" name="address" + combo_editor.select_on_focus="true" top_delta="0" width="540"> <combo_box.commit_callback @@ -106,6 +111,7 @@ height="20" layout="topleft" left_delta="0" + min_height="20" name="time_controls" top_delta="0" user_resize="false" @@ -163,6 +169,7 @@ height="20" layout="topleft" left_delta="0" + min_height="20" name="parcel_owner_controls" top_delta="0" user_resize="false" @@ -189,9 +196,9 @@ top_delta="0" user_resize="false" width="540"> - <web_browser + <web_browser bottom="-30" - follows="left|right|top|bottom" + follows="all" layout="topleft" left="0" name="browser" diff --git a/indra/newview/skins/default/xui/en/floater_my_friends.xml b/indra/newview/skins/default/xui/en/floater_my_friends.xml deleted file mode 100644 index e7efcc78444355bc343468a5ac8bd3d5ebeb41b9..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_my_friends.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_close="false" - can_resize="true" - height="390" - layout="topleft" - min_height="240" - min_width="365" - name="floater_my_friends" - help_topic="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" - help_topic="my_friends_friends_tab" - name="friends_panel" - width="370" /> - <panel - bottom="364" - filename="panel_groups.xml" - label="Groups" - layout="topleft" - left="0" - help_topic="my_friends_groups_tab" - name="groups_panel" - width="370" /> - </tab_container> -</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 index ca81b9bcf0f9ea0a2d74e7f8d9f5a3756977e840..e243ccd2f91e1401217fdca93e7f76b280609887 100644 --- a/indra/newview/skins/default/xui/en/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml @@ -36,6 +36,7 @@ follows="left|right|top|bottom" layout="topleft" left="5" + orientation="vertical" name="notification_channels" right="-5" top="42" /> diff --git a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml deleted file mode 100644 index 1d73d516d0bc6508597f397216462d61e5d67249..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_outfit_save_as.xml +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - can_close="false" - can_minimize="false" - height="100" - layout="topleft" - title="Save Outfit" - name="modal container" - width="240"> - <button - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left="20" - name="Save" - top="70" - width="82" /> - <button - height="23" - 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" - height="30" - layout="topleft" - left="20" - word_wrap="true" - name="Save item as:" - top="10" - width="200"> - Save what I'm wearing -as a new Outfit: - </text> - <line_editor - type="string" - length="1" - border_style="line" - border_thickness="1" - follows="left|top" - height="23" - layout="topleft" - left_delta="0" - show_text_as_tentative="false" - top_pad="0" - max_length="63" - name="name ed" - width="200"> - [DESC] (new) - </line_editor> -</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 deleted file mode 100644 index 2017cf2bd102aaed5f659ab6127517012c028d21..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_preview_classified.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - auto_tile="true" - height="510" - layout="topleft" - name="classified_preview" - help_topic="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 deleted file mode 100644 index a4066b34c56d57a3241eae44201da7131532aef7..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_preview_event.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - auto_tile="true" - height="510" - layout="topleft" - name="event_preview" - help_topic="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_info.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml deleted file mode 100644 index 66408a50572f3d23c06553851e4b63180730b27d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_minimize="false" - follows="left|top" - height="155" - layout="topleft" - name="Gesture" - help_topic="gesture" - save_rect="true" - title="GESTURE SHORTCUT" - width="260"> - <scroll_list - follows="top|left" - height="110" - layout="topleft" - left="10" - name="library_list" - top="10" - width="240"> - <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="Preview" - layout="topleft" - left="20" - name="preview_btn" - top_pad="50" - width="80" /> - <button - follows="top|left" - height="20" - label="Save" - layout="topleft" - left_pad="5" - name="save_btn" - top_delta="0" - width="80" /> - <button - follows="top|left" - height="20" - label="Cancel (not working)" - layout="topleft" - left_pad="5" - name="save_btn" - top_delta="0" - width="80" /--> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml deleted file mode 100644 index 26252a7a16d91baf9ce358ce27d40ec327be7481..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_minimize="false" - follows="left|top" - height="90" - layout="topleft" - name="Gesture" - help_topic="gesture" - save_rect="true" - title="GESTURE SHORTCUT" - width="260"> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifSmall" - height="10" - layout="topleft" - left="10" - name="trigger_label" - top_pad="10" - width="100"> - Chat: - </text> - <line_editor - follows="left|top" - height="20" - layout="topleft" - left_pad="5" - max_length="31" - name="trigger_editor" - top_delta="-4" - width="135" /> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifSmall" - height="10" - layout="topleft" - left="10" - name="key_label" - top_pad="10" - width="100"> - Keyboard: - </text> - <combo_box - height="20" - label="None" - layout="topleft" - left_pad="13" - name="modifier_combo" - top_delta="-4" - width="50" /> - <combo_box - height="20" - label="None" - layout="topleft" - left_pad="5" - name="key_combo" - top_delta="0" - width="45" /> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifSmall" - height="10" - layout="topleft" - left="10" - 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_pad="10" - width="100"> - Replace: - </text> - <line_editor - follows="left|top" - height="20" - layout="topleft" - left_pad="5" - 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="135" /> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml deleted file mode 100644 index 34f707cd2aea957b915dff6f7d8857b5fc62f603..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,242 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_minimize="false" - follows="left|top" - height="155" - layout="topleft" - name="Gesture" - help_topic="gesture" - save_rect="true" - title="GESTURE SHORTCUT" - width="260"> - <scroll_list - follows="top|left" - height="110" - layout="topleft" - left="10" - name="step_list" - top_pad="10" - width="240" /> - <!--text - type="string" - length="1" - follows="top|left" - font="SansSerifSmall" - height="60" - layout="topleft" - left="10" - name="help_label" - top_pad="10" - width="200"> - All steps happen simultaneously, -unless you add wait steps. - </text--> - <!--text - follows="top|left" - height="60" - layout="topleft" - left="10" - name="options_text" - top_pad="10" - width="205" /--> - <!--combo_box - follows="top|left" - height="20" - layout="topleft" - left_delta="10" - name="animation_list" - top_pad="10" - width="100" /> - <combo_box - follows="top|left" - height="20" - layout="topleft" - left_delta="0" - name="sound_list" - top_delta="10" - width="100" /> - <line_editor - follows="top|left" - height="20" - layout="topleft" - left_delta="0" - max_length="127" - name="chat_editor" - top_pad="10" - width="100" /> - <radio_group - draw_border="false" - follows="top|left" - height="40" - layout="topleft" - left_pad="8" - name="animation_trigger_type" - top_pad="10" - 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="16" - name="wait_anim_check" - top_pad="10" - width="100" /> - <check_box - follows="top|left" - height="20" - label="time in seconds" - layout="topleft" - left_delta="0" - name="wait_time_check" - top_pad="10" - width="100" /> - <line_editor - follows="top|left" - height="20" - layout="topleft" - left_pad="5" - max_length="15" - name="wait_time_editor" - top_pad="10" - width="50" /--> - - - - <!--For pop out floater--> - <!--scroll_list - follows="top|left" - height="110" - layout="topleft" - left="10" - name="library_list" - top_pad="10" - width="260"> - <scroll_list.rows - value="Animation" /> - <scroll_list.rows - value="Sound" /> - <scroll_list.rows - value="Chat" /> - <scroll_list.rows - value="Wait" /> - </scroll_list> - <text - type="string" - length="1" - follows="top|left" - font="SansSerifSmall" - height="60" - layout="topleft" - left="10" - name="help_label" - top_pad="10" - width="200"> - All steps happen simultaneously, -unless you add wait steps. - </text> - <text - follows="top|left" - height="60" - layout="topleft" - left="10" - name="options_text" - top_pad="10" - width="205" /> - <combo_box - follows="top|left" - height="20" - layout="topleft" - left_delta="10" - name="animation_list" - top_pad="10" - 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="445" - 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="16" - name="wait_anim_check" - top="430" - 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" /--> -</floater> diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 354f1de85e163b986bff23c182f3df80841a0929..8770ede7e9f920348ed84c0d0536357d0ecf8ff5 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -38,6 +38,7 @@ user_resize="false" width="630"> <web_browser + trusted_content="true" follows="left|right|top|bottom" layout="topleft" left="0" diff --git a/indra/newview/skins/default/xui/en/floater_statistics.xml b/indra/newview/skins/default/xui/en/floater_statistics.xml deleted file mode 100644 index 3a4e84514111db6c6b35e95e8b518a276922be36..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_statistics.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - can_resize="true" - follows="right|top" - height="392" - layout="topleft" - mouse_opaque="false" - name="stats floater" - help_topic="stats_floater" - title="STATISTICS" - width="250" /> diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml index 1935edfcc1c69cffd2ac01281acf95b9ef15eb2a..95aaadfcf3f565b0a3a19ad20fb5be930d87414b 100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -41,7 +41,7 @@ layout="topleft" left_delta="0" name="text_enabled_color_checkbox" - text_enabled_color="EmphasisColor" + label_text.text_color="EmphasisColor" top_pad="14" width="150" /> <check_box @@ -51,7 +51,7 @@ layout="topleft" left_delta="0" name="text_disabled_color_checkbox" - text_disabled_color="EmphasisColor_35" + label_text.text_readonly_color="EmphasisColor_35" top_pad="14" width="150" /> <check_box diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml index fb583114c08d24fb9858b1372382df470e5e374f..13c850c86c0300c1000a46c372011795bdf3b13b 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -79,7 +79,7 @@ follows="top|left" left="10" height="16"> - For widget list see https://wiki.lindenlab.com/wiki/Viewer:UI/Widgets + For widget list see http://wiki.secondlife.com/wiki/XUI_Reference </text> <!-- First column --> diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 1d58e7a540f4d2702d80f2c716c1de3943e6334d..cea2ba2c7f585b6f8eb77be70dc84a58b3f18a8c 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -255,7 +255,7 @@ label="Edit linked" layout="topleft" name="checkbox edit linked parts" - top_pad="0"> + top_pad="2"> <check_box.commit_callback function="BuildTool.selectComponent"/> </check_box> @@ -267,7 +267,7 @@ left="13" name="RenderingCost" tool_tip="Shows the rendering cost calculated for this object" - top_pad="2" + top_pad="0" type="string" width="100"> þ: [COUNT] @@ -732,7 +732,7 @@ layout="topleft" right="-10" name="obj_count" - top_pad="5" + top_pad="7" width="143"> Objects: [COUNT] </text> @@ -758,7 +758,7 @@ tab_min_width="40" tab_position="top" tab_height="25" - top="170" + top="173" width="295"> <panel border="false" @@ -2022,12 +2022,13 @@ even though the user gets a free copy. type="string" length="1" follows="left|top" - height="10" + height="20" layout="topleft" left="10" name="select_single" top="5" - width="252"> + width="252" + word_wrap="true"> Select only one primitive to edit features. </text> <text @@ -2049,7 +2050,7 @@ even though the user gets a free copy. left="10" name="Flexible1D Checkbox Ctrl" tool_tip="Allows object to flex about the Z axis (Client-side only)" - top_pad="10" + top_pad="20" width="121" /> <spinner follows="left|top" diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml index cbfaac958bdfc4a63dd74785200a0231781ed4c5..af1617eb39d45690ce0e653033e60c26d4cf9939 100644 --- a/indra/newview/skins/default/xui/en/floater_tos.xml +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -58,6 +58,7 @@ Please read the following Terms of Service and Privacy Policy carefully. To continue logging in to [SECOND_LIFE], you must accept the agreement. </text> <web_browser + trusted_content="true" follows="left|top" height="340" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml index bf5bd87ad6492b0b03443e834d1b1e475d36ba20..14320995908068ff3df7eabd02c6109ee81c458c 100644 --- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml @@ -86,6 +86,7 @@ visible="true" width="20" /> </layout_panel> + <layout_panel name="leave_call_panel" height="26" auto_resize="false"> <layout_stack clip="true" auto_resize="false" @@ -96,11 +97,15 @@ name="voice_effect_and_leave_call_stack" orientation="horizontal" width="262"> - <panel - class="panel_voice_effect" - name="panel_voice_effect" - visiblity_control="VoiceMorphingEnabled" - filename="panel_voice_effect.xml" /> + <layout_panel + height="26" + width="200"> + <panel + class="panel_voice_effect" + name="panel_voice_effect" + visiblity_control="VoiceMorphingEnabled" + filename="panel_voice_effect.xml" /> + </layout_panel> <layout_panel auto_resize="false" user_resize="false" @@ -118,6 +123,7 @@ width="100" /> </layout_panel> </layout_stack> + </layout_panel> <layout_panel follows="all" layout="topleft" 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 deleted file mode 100644 index 71812bd1a67a8b7f28b7ff951c2cf2151cdd29fc..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="0" - can_close="false" - can_minimize="false" - height="100" - layout="topleft" - name="modal container" - width="240"> - <button - height="23" - label="Save" - label_selected="Save" - layout="topleft" - left="20" - name="Save" - top="70" - width="82" /> - <button - height="23" - 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" - height="30" - layout="topleft" - word_wrap="true" - left="20" - name="Save item as:" - top="10" - width="200"> - Save item to my inventory as: - </text> - <line_editor - type="string" - length="1" - border_style="line" - border_thickness="1" - follows="left|top" - height="23" - layout="topleft" - left_delta="0" - max_length="63" - name="name ed" - top_pad="0" - width="200"> - New [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index a1ca910cbbb96b7d84d29d5526f675b980dba296..8d9ebf6e06b568cf3ff37976d5df54dced5a9bc8 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -20,6 +20,7 @@ mouse_opaque="false" name="nav_bar_container" tab_stop="false" + min_height="10" width="1024" user_resize="false" visible="false"> @@ -65,25 +66,24 @@ mouse_opaque="false" name="world_stack" orientation="vertical"> - <panel auto_resize="true" - follows="all" - height="500" - layout="topleft" - tab_stop="false" - mouse_opaque="false" - name="hud container" - width="500"> - <panel auto_resize="false" - follows="left|top" - height="19" - left="0" - mouse_opaque="false" - name="topinfo_bar_container" - tab_stop="false" - top="0" - user_resize="false" - visible="false" - width="1024"/> + <layout_panel auto_resize="true" + follows="all" + height="500" + layout="topleft" + tab_stop="false" + mouse_opaque="false" + user_resize="false" + name="hud container" + width="500"> + <panel follows="left|top" + height="19" + left="0" + mouse_opaque="false" + name="topinfo_bar_container" + tab_stop="false" + top="0" + visible="false" + width="1024"/> <panel follows="right|top|bottom" height="500" mouse_opaque="false" @@ -101,10 +101,10 @@ name="stand_stop_flying_container" visible="false" width="500"/> - </panel> + </layout_panel> <layout_panel auto_resize="false" - follows="all" min_height="33" + height="33" mouse_opaque="false" name="bottom_tray_container" visible="false"/> @@ -112,7 +112,7 @@ </layout_panel> <!-- side tray --> <layout_panel auto_resize="false" - follows="all" + follows="top|bottom" height="500" min_width="333" mouse_opaque="false" @@ -184,15 +184,6 @@ visible="false" width="1024"/> </panel> - <panel top="0" - follows="all" - height="768" - mouse_opaque="true" - name="progress_view" - filename="panel_progress.xml" - class="progress_view" - width="1024" - visible="false"/> <panel top="0" follows="all" height="768" @@ -208,6 +199,22 @@ bottom="-1" height="11" /> </panel> + <view top="0" + left="0" + width="1024" + height="768" + name="hint_holder" + mouse_opaque="false" + follows="all"/> + <panel top="0" + follows="all" + height="768" + mouse_opaque="true" + name="progress_view" + filename="panel_progress.xml" + class="progress_view" + width="1024" + visible="false"/> <menu_holder top="0" follows="all" height="768" diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml index 9059745f4602ea858e08caafb28ce06a4d992cfa..2afa29ec100e4fcc500d3500feef858c2d16ac17 100644 --- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml @@ -23,11 +23,11 @@ function="Self.EnableStandUp" /> </menu_item_call> <context_menu - label="Take Off â–¶" + label="Take Off" layout="topleft" name="Take Off >"> <context_menu - label="Clothes â–¶" + label="Clothes" layout="topleft" name="Clothes >"> <menu_item_call @@ -174,11 +174,11 @@ </menu_item_call> </context_menu> <context_menu - label="HUD â–¶" + label="HUD" layout="topleft" name="Object Detach HUD" /> <context_menu - label="Detach â–¶" + label="Detach" layout="topleft" name="Object Detach" /> <menu_item_call diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 31f70d99caafb7ae3612f4b702e5304ba90475f6..c751aa4e0c2caa949e8530d5cc5237750ab70ebf 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -72,7 +72,7 @@ </menu_item_call> <menu_item_separator layout="topleft" /> <context_menu - label="Put On â–¶" + label="Put On" name="Put On" > <menu_item_call enabled="false" @@ -93,14 +93,14 @@ function="Object.EnableWear" /> </menu_item_call> <context_menu - label="Attach â–¶" + label="Attach" name="Object Attach" /> <context_menu - label="Attach HUD â–¶" + label="Attach HUD" name="Object Attach HUD" /> </context_menu> <context_menu - label="Remove â–¶" + label="Remove" name="Remove"> <menu_item_call enabled="false" diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml index 4ed5807808a6f471cb6547a503374d4fae2d440d..2c32d9d303e07861a3d05cc976eee8d57e920ca5 100644 --- a/indra/newview/skins/default/xui/en/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml @@ -130,7 +130,7 @@ layout="topleft" name="Moderator Options Separator"/> <context_menu - label="Moderator Options >" + label="Moderator Options" layout="topleft" name="Moderator Options"> <menu_item_check diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index 19707c1bc9010cb0d90a0b310768cbc0f906096f..af241862b667834ed1f9f5d932a4a41178db3622 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -669,6 +669,14 @@ function="Tools.SaveToObjectInventory" /> <menu_item_call.on_enable function="Tools.EnableSaveToObjectInventory" /> + </menu_item_call> + <menu_item_call + label="Return Object" + name="Return Object back to Owner"> + <menu_item_call.on_click + function="Object.Return" /> + <menu_item_call.on_enable + function="Object.EnableReturn" /> </menu_item_call> </menu> <menu @@ -772,6 +780,16 @@ <menu_item_separator/> + <menu_item_check + label="Show Selection Outlines" + name="Show Selection Outlines"> + <menu_item_check.on_check + function="CheckControl" + parameter="RenderHighlightSelections" /> + <menu_item_check.on_click + function="ToggleControl" + parameter="RenderHighlightSelections" /> + </menu_item_check> <menu_item_check label="Show Hidden Selection" name="Show Hidden Selection"> @@ -950,6 +968,14 @@ function="Floater.Show" parameter="sl_about" /> </menu_item_call> + <menu_item_check + label="Enable Hints" + name="Enable Hints"> + <on_check + control="EnableUIHints"/> + <on_click + function="ToggleUIHints"/> + </menu_item_check> </menu> <menu create_jump_keys="true" @@ -2629,8 +2655,8 @@ function="Advanced.PrintTextureMemoryStats" /> </menu_item_call> <menu_item_check - label="Double-Click Auto-Pilot" - name="Double-Click Auto-Pilot"> + label="Double-ClickAuto-Pilot" + name="Double-ClickAuto-Pilot"> <menu_item_check.on_check function="CheckControl" parameter="DoubleClickAutoPilot" /> diff --git a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml index 5feac53c33680ff0f6eb67ebdc2cf65c09c0a6ac..aa56b4ba63c2d730710c781ec6e34780935776ca 100644 --- a/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/en/menu_wearable_list_item.xml @@ -37,11 +37,11 @@ function="Attachment.Detach" /> </menu_item_call> <context_menu - label="Attach to â–¶" + label="Attach to" layout="topleft" name="wearable_attach_to" /> <context_menu - label="Attach to HUD â–¶" + label="Attach to HUD" layout="topleft" name="wearable_attach_to_hud" /> <menu_item_call diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 609a9b09be4e9af0504bf2c125b8c8408a08daba..e1aecda151cfcb327235a72f52e532e10c0b3da1 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -1,6 +1,5 @@ <?xml version="1.0" ?><notifications> - - <global name="skipnexttime"> + <global name="skipnexttime"> Don't show me this again </global> @@ -97,7 +96,7 @@ </template> <notification - functor="GenericAcknowledge" + functor="GenericAcknowledge" icon="alertmodal.tga" name="MissingAlert" label="Unknown Notification Message" @@ -723,7 +722,7 @@ You need an account to enter [SECOND_LIFE]. Would you like to create one now? <url option="0" name="url" - openexternally = "1"> + target = "_external"> http://join.secondlife.com/ </url> @@ -2033,8 +2032,8 @@ Offer friendship to [NAME]? </notification> <notification - icon="alertmodal.tga" - label="Add Friend" + 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. @@ -2060,7 +2059,8 @@ Would you be my friend? icon="alertmodal.tga" label="Save Outfit" name="SaveOutfitAs" - type="alertmodal"> + type="alertmodal" + unique="true"> Save what I'm wearing as a new Outfit: <form name="form"> <input name="message" type="text"> @@ -2076,7 +2076,6 @@ Would you be my friend? name="Cancel" text="Cancel"/> </form> - <unique/> </notification> <notification @@ -4011,37 +4010,37 @@ Go to your [http://secondlife.com/account/ Dashboard] to see your account histor <notification icon="alertmodal.tga" name="ConfirmQuit" - type="alertmodal"> + type="alertmodal" + unique="true"> Are you sure you want to quit? <usetemplate ignoretext="Confirm before I quit" name="okcancelignore" notext="Don't Quit" yestext="Quit"/> - <unique/> </notification> <notification icon="alertmodal.tga" name="DeleteItems" - type="alertmodal"> + type="alertmodal" + unique="true"> [QUESTION] <usetemplate ignoretext="Confirm before deleting items" name="okcancelignore" notext="Cancel" yestext="OK"/> - <unique/> </notification> <notification icon="alertmodal.tga" name="HelpReportAbuseEmailLL" - type="alert"> + type="alert" + unique="true"> Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. All reported abuses are investigated and resolved. - <unique/> </notification> <notification @@ -4983,47 +4982,47 @@ Message from [NAME]: icon="notify.tga" name="NotSafe" persist="true" - type="notify"> + type="notify" + unique="true"> This land has damage enabled. You can be hurt here. If you die, you will be teleported to your home location. - <unique/> </notification> <notification icon="notify.tga" name="NoFly" persist="true" - type="notify"> + type="notify" + unique="true"> This area has flying disabled. You can't fly here. - <unique/> </notification> <notification icon="notify.tga" name="PushRestricted" persist="true" - type="notify"> + type="notify" + unique="true"> This area does not allow pushing. You can't push others here unless you own the land. - <unique/> </notification> <notification icon="notify.tga" name="NoVoice" persist="true" - type="notify"> + type="notify" + unique="true"> This area has voice chat disabled. You won't be able to hear anyone talking. - <unique/> </notification> <notification icon="notify.tga" name="NoBuild" persist="true" - type="notify"> + type="notify" + unique="true"> This area has building disabled. You can't build or rez objects here. - <unique/> </notification> <notification @@ -5944,9 +5943,9 @@ The voice call you are trying to join, [VOICE_CHANNEL_NAME], has reached maximum <notification icon="notifytip.tga" name="ProximalVoiceChannelFull" - type="notifytip"> + type="notifytip" + unique="true"> We're sorry. This area has reached maximum capacity for voice conversations. Please try to use voice in another area. - <unique/> </notification> <notification @@ -6003,9 +6002,9 @@ Failed to connect to [VOICE_CHANNEL_NAME], please try again later. You will now duration="10" icon="notifytip.tga" name="VoiceLoginRetry" - type="notifytip"> + type="notifytip" + unique="true"> We are creating a voice channel for you. This may take up to one minute. - <unique/> </notification> <notification @@ -6013,10 +6012,10 @@ We are creating a voice channel for you. This may take up to one minute. name="VoiceEffectsExpired" sound="UISndAlert" persist="true" - type="notify"> + type="notify" + unique="true"> One or more of your subscribed Voice Morphs has expired. [[URL] Click here] to renew your subscription. - <unique/> </notification> <notification @@ -6024,10 +6023,10 @@ One or more of your subscribed Voice Morphs has expired. name="VoiceEffectsExpiredInUse" sound="UISndAlert" persist="true" - type="notify"> + type="notify" + unique="true"> The active Voice Morph has expired, your normal voice settings have been applied. [[URL] Click here] to renew your subscription. - <unique/> </notification> <notification @@ -6035,21 +6034,20 @@ The active Voice Morph has expired, your normal voice settings have been applied name="VoiceEffectsWillExpire" sound="UISndAlert" persist="true" - type="notify"> + type="notify" + unique="true"> One or more of your Voice Morphs will expire in less than [INTERVAL] days. [[URL] Click here] to renew your subscription. - <unique/> </notification> - LLNotificationsUtil::add("VoiceEffectsNew"); <notification icon="notify.tga" name="VoiceEffectsNew" sound="UISndAlert" persist="true" - type="notify"> + type="notify" + unique="true"> New Voice Morphs are available! - <unique/> </notification> <notification @@ -6376,8 +6374,8 @@ Are you sure you want to leave this call? ignoretext="Confirm before I leave call" name="okcancelignore" notext="No" - yestext="Yes"/> - <unique/> + yestext="Yes" + unique="true"/> </notification> <notification @@ -6393,10 +6391,84 @@ Mute everyone? ignoretext="Confirm before I mute all participants in a group call" name="okcancelignore" yestext="Ok" - notext="Cancel"/> - <unique/> + notext="Cancel" + unique="true"/> + </notification> + + <notification + name="HintChat" + label="Chat" + type="hint" + unique="true"> + To join the conversation, type into the chat field below. </notification> + <notification + name="HintSit" + label="Stand" + type="hint" + unique="true"> + To stand up and exit the sitting position, click the Stand button. + </notification> + + <notification + name="HintDestinationGuide" + label="Explore the World" + type="hint" + unique="true"> + The Destination Guide contains thousands of new places to discover. Select a location and choose Teleport to start exploring. + </notification> + + <notification + name="HintSidePanel" + label="Side Panel" + type="hint" + unique="true"> + Get quick access to your inventory, outfits, profiles and more in the side panel. + </notification> + + <notification + name="HintMove" + label="Move" + type="hint" + unique="true"> + To walk or run, open the Move Panel and use the directional arrows to navigate. You can also use the directional keys on your keyboard. + </notification> + + <notification + name="HintInventory" + label="Inventory" + type="hint" + unique="true"> + Check your inventory to find items. Newest items can be easily found in the Recent tab. + </notification> + + <notification + name="HintLindenDollar" + label="You've got Linden Dollars!" + type="hint" + unique="true"> + Here's your current balance of L$. Click Buy L$ to purchase more Linden Dollars. + </notification> + + <notification + name="PopupAttempt" + icon="Popup_Caution" + type="browser"> + A pop-up was prevented from opening. + <form name="form"> + <ignore name="ignore" + control="MediaEnablePopups" + invert_control="false" + text="Enable all pop-ups"/> + <button default="true" + index="0" + name="open" + text="Open pop-up window"/> + </form> + </notification> + + <global name="UnsupportedCPU"> - Your CPU speed does not meet the minimum requirements. </global> diff --git a/indra/newview/skins/default/xui/en/panel_audio_device.xml b/indra/newview/skins/default/xui/en/panel_audio_device.xml deleted file mode 100644 index 546f46205f6eb32ad12590f06076ec96e00e3e9e..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_audio_device.xml +++ /dev/null @@ -1,152 +0,0 @@ -<?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" - border_visible="false" - 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 index b385654010e2d7be9107ac5276964d151f52d2c6..6f3629cc8fc2a7521847597c8dfdb2fc3d8410fc 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -19,6 +19,11 @@ <string name="FormatMonths">[COUNT]mon</string> <string name="FormatYears">[COUNT]y</string> + <!-- + *NOTE: llavatarlistitem.cpp lays these controls out depending on which + ones are visible. Trying to change their order here will break it + ... which kinda sucks. + --> <icon follows="top|right|left" height="24" @@ -71,49 +76,49 @@ value="0s" width="35" /> <icon - height="20" + height="16" follows="right" - image_name="Permission_Visible_Online" + image_name="Permission_Edit_Objects_Theirs" layout="topleft" left_pad="3" - right="-141" - name="permission_online_icon" - tool_tip="This friend can see when you're online" - top="2" - width="20" /> + right="-129" + name="permission_edit_theirs_icon" + tool_tip="You can edit this friend's objects" + top="4" + width="16" /> <icon - height="20" + height="16" follows="right" - image_name="Permission_Visible_Map" + image_name="Permission_Edit_Objects_Mine" layout="topleft" left_pad="3" - tool_tip="This friend can locate you on the map" - right="-118" - name="permission_map_icon" + right="-110" + name="permission_edit_mine_icon" + tool_tip="This friend can edit, delete or take your objects" top_delta="0" - width="20" /> + width="16" /> <icon - height="20" + height="16" follows="right" - image_name="Permission_Edit_Objects_Mine" + image_name="Permission_Visible_Map" layout="topleft" left_pad="3" - right="-95" - name="permission_edit_mine_icon" - tool_tip="This friend can edit, delete or take your objects" + tool_tip="This friend can locate you on the map" + right="-91" + name="permission_map_icon" top_delta="0" - width="20" /> + width="16" /> <icon - height="20" + height="16" follows="right" - image_name="Permission_Edit_Objects_Theirs" + image_name="Permission_Visible_Online" layout="topleft" left_pad="3" right="-72" - name="permission_edit_theirs_icon" - tool_tip="You can edit this friend's objects" + name="permission_online_icon" + tool_tip="This friend can see when you're online" top_delta="0" - width="20" /> + width="16" /> <button follows="right" height="16" @@ -124,7 +129,7 @@ right="-53" name="info_btn" tab_stop="false" - top_delta="2" + top_delta="0" width="16" /> <button follows="right" diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index cdd596222d988eae7f2ed032006b9bb37aebe59a..63068a069f4b608c2d01056067ac3faae7de76c0 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -32,31 +32,32 @@ orientation="horizontal" top="0" width="1310"> - <icon + <layout_panel auto_resize="false" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" + user_resize="false" min_width="2" - top="0" width="2" /> <layout_panel auto_resize="false" - filename="panel_nearby_chat_bar.xml" - follows="left|right" - height="28" layout="topleft" - left="0" max_width="320" - min_height="23" min_width="214" + height="28" mouse_opaque="false" - name="chat_bar" - top="4" + name="chat_bar_layout_panel" user_resize="true" - width="308" /> + width="308" > + <panel + name="chat_bar" + filename="panel_nearby_chat_bar.xml" + left="0" + height="28" + width="308" + top="0" + mouse_opaque="false" + follows="left|right" + /> + </layout_panel> <!-- There is resize bar between chatbar and Speak button. It has 2px width (is is set as 2*UIResizeBarOverlap) --> @@ -404,18 +405,10 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly. width="7" /> </chiclet_panel> </layout_panel> - <icon - auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" - min_width="4" - name="DUMMY" - top="0" - width="4" /> + <layout_panel auto_resize="false" + user_resize="false" + width="4" + min_width="4"/> <layout_panel auto_resize="false" follows="right" @@ -507,17 +500,11 @@ image_pressed_selected "Lit" + "Selected" - there are new messages and the Well </button> </chiclet_notification> </layout_panel> - <icon + <layout_panel auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" + user_resize="false" min_width="4" name="DUMMY2" - top="0" width="8" /> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml index 6e9476f8146ad1e1a3a7a10e86600458f389d972..efb1da4c05b57805d885d60ebb43c00c02fb9eff 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray_lite.xml @@ -28,30 +28,28 @@ orientation="horizontal" top="0" width="1000"> - <icon + <layout_panel auto_resize="false" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" + user_resize="false" min_width="2" - left="0" - top="0" width="2" /> <layout_panel mouse_opaque="false" auto_resize="true" - follows="left|right" height="28" layout="topleft" - left="0" - min_height="23" width="310" - top="4" min_width="188" - name="chat_bar" - user_resize="false" - filename="panel_nearby_chat_bar.xml" /> + user_resize="false"> + <panel + left="0" + filename="panel_nearby_chat_bar.xml" + follows="left|right" + top="4" + width="310" + name="chat_bar" + mouse_opaque="false"/> + </layout_panel> <layout_panel mouse_opaque="false" auto_resize="false" @@ -79,17 +77,11 @@ use_ellipses="true" /> </gesture_combo_list> </layout_panel> - <icon + <layout_panel auto_resize="false" - color="0 0 0 0" - follows="left|right" - height="10" - image_name="spacer24.tga" - layout="topleft" - left="0" + user_resize="false" min_width="3" name="after_gesture_panel" - top="0" width="3"/> </layout_stack> </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 index 903dcd4c2463f012ad551047f3587920483f5e3d..6781a761200f3b5bc32716b079672e57b249a844 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -242,7 +242,7 @@ left="8" name="show_in_search_checkbox" height="15" - text_enabled_color="white" + label_text.text_color="white" top_pad="12" width="100" /> <text @@ -351,15 +351,15 @@ user_resize="false" auto_resize="true" width="153"> - <button + <button follows="bottom|left|right" - height="23" - label="Save Changes" - layout="topleft" + height="23" + label="Save Changes" + layout="topleft" left="1" - name="save_btn" + name="save_btn" top="0" - width="152" /> + width="152" /> </layout_panel> <layout_panel @@ -372,15 +372,15 @@ user_resize="false" auto_resize="true" width="154"> - <button + <button follows="bottom|left|right" - height="23" - label="Cancel" - layout="topleft" + height="23" + label="Cancel" + layout="topleft" left="1" - name="cancel_btn" + name="cancel_btn" top="0" - width="153" /> + width="153" /> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_friends.xml b/indra/newview/skins/default/xui/en/panel_friends.xml deleted file mode 100644 index c315adb33ebaa2e8745d15e718b837f1bc7a5e04..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_friends.xml +++ /dev/null @@ -1,124 +0,0 @@ -<?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 - dynamic_width="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_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index 2a3add161a603c50b87a6dc9393143251e4c9851..3ded5c6678c16c0e53fd5f6424e11a87a6177555 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -177,36 +177,16 @@ background_visible="true" </accordion> </layout_panel> </layout_stack> - - <layout_stack - name="layout" - orientation="horizontal" - follows="bottom|left|right" - left="8" - top_pad="0" - height="30" - width="292" - border_size="0"> - - <layout_panel - height="30" - layout="topleft" - auto_resize="false" - left="0" - top_pad="0" - name="button_row" - follows="bottom|left|right" - width="313"> <layout_stack follows="bottom|left|right" height="25" layout="topleft" name="button_row_ls" - left="2" + left="6" orientation="horizontal" top_pad="5" - width="309"> + width="297"> <layout_panel follows="bottom|left|right" @@ -215,7 +195,7 @@ background_visible="true" left="0" name="btn_refresh_lp" user_resize="false" - auto_resize="true" + auto_resize="false" width="24"> <button follows="bottom|left|right" @@ -236,7 +216,7 @@ background_visible="true" name="btn_chat_lp" user_resize="false" auto_resize="true" - width="83"> + width="91"> <button follows="bottom|left|right" label="Chat" @@ -244,7 +224,7 @@ background_visible="true" left="1" height="23" top="0" - width="82" /> + width="90" /> </layout_panel> <layout_panel @@ -255,7 +235,7 @@ background_visible="true" name="call_btn_lp" user_resize="false" auto_resize="true" - width="113"> + width="91"> <button follows="bottom|left|right" left="1" @@ -265,7 +245,7 @@ background_visible="true" layout="topleft" tool_tip="Call this group" top="0" - width="112" /> + width="90" /> </layout_panel> <layout_panel @@ -276,7 +256,7 @@ background_visible="true" name="btn_apply_lp" user_resize="false" auto_resize="true" - width="83"> + width="91"> <button follows="bottom|left|right" height="23" @@ -285,18 +265,7 @@ background_visible="true" name="btn_apply" left="1" top="0" - width="82" /> - </layout_panel> - - <layout_panel - follows="bottom|left|right" - height="23" - layout="bottomleft" - left_pad="3" - name="btn_create_lp" - user_resize="false" - auto_resize="true" - width="104"> + width="90" /> <button follows="bottom|left|right" height="23" @@ -307,19 +276,8 @@ background_visible="true" name="btn_create" visible="true" tool_tip="Create a new Group" - width="103" /> + width="90" /> </layout_panel> - </layout_stack> - <!--<button - left_pad="3" - height="23" - label="Cancel" - label_selected="Cancel" - name="btn_cancel" - visible="false" - width="65" />--> - </layout_panel> - - </layout_stack> + </layout_stack> </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 index 76f7484c6803deb2d088a312d6ebf3452b7c68f2..2e57c85d6f71201e567f10577bb4b2564ab0d2a9 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -60,24 +60,30 @@ left="0" right="-1" top="0" + sort_column="0" + sort_ascending="true" name="group_parcel_list" width="313"> <scroll_list.columns label="Parcel" name="name" - width="78" /> + width="47" /> <scroll_list.columns label="Region" name="location" - width="78" /> + width="47" /> <scroll_list.columns label="Type" name="type" - width="70" /> + width="47" /> <scroll_list.columns label="Area" name="area" - width="50" /> + width="47" /> + <scroll_list.columns + label="Hidden" + name="hidden" + width="47" /> </scroll_list> <text type="string" diff --git a/indra/newview/skins/default/xui/en/panel_group_notify.xml b/indra/newview/skins/default/xui/en/panel_group_notify.xml index 6f271a757c4d52e235157c5c71e64ff03f8826fb..cded4cf31a2f8e0e903b99f7c6e28f03beb3e29a 100644 --- a/indra/newview/skins/default/xui/en/panel_group_notify.xml +++ b/indra/newview/skins/default/xui/en/panel_group_notify.xml @@ -85,6 +85,7 @@ layout="topleft" left="45" name="attachment" + parse_urls="false" text_color="GroupNotifyTextColor" value="Attachment" use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/panel_groups.xml b/indra/newview/skins/default/xui/en/panel_groups.xml deleted file mode 100644 index bba399481b4e1ab5efb49719adf8de6eb1f45f29..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_groups.xml +++ /dev/null @@ -1,111 +0,0 @@ -<?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_hint.xml b/indra/newview/skins/default/xui/en/panel_hint.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2e9d0aef0941378a67896f9ef6836e8183f27f6 --- /dev/null +++ b/indra/newview/skins/default/xui/en/panel_hint.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<panel + width="205" + height="100"> + <text name="hint_title" + font="SansSerifMedium" + left="8" + right="180" + top="8" + bottom="20" + follows="left|right|top" + text_color="Black" + wrap="false"/> + <text name="hint_text" + left="8" + right="197" + top="26" + bottom="92" + follows="all" + text_color="Black" + wrap="true"/> + <button right="197" + top="8" + width="16" + height="16" + name="close" + follows="right|top" + image_color="DkGray" + image_unselected="Icon_Close_Foreground" + image_selected="Icon_Close_Press"/> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml index 33a5e01e4c48f6c6f7f84c1e4bc80064abeb734b..aa0edbfb8a6d8ba7b3f6baaac02cbfc26e32b857 100644 --- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml +++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml @@ -3,11 +3,11 @@ border="false" height="300" name="panel_im_control_panel" - width="119"> + width="150"> <avatar_icon follows="left|top" height="105" - left_delta="5" + left_delta="20" name="avatar_icon" top="-5" width="114"/> @@ -22,7 +22,7 @@ name="button_stack" orientation="vertical" top_pad="5" - width="114"> + width="145"> <layout_panel mouse_opaque="false" auto_resize="true" @@ -31,7 +31,7 @@ layout="topleft" left="2" min_height="0" - width="109" + width="140" top="0" name="spacer" user_resize="false" /> @@ -41,7 +41,7 @@ height="20" layout="topleft" min_height="20" - width="109" + width="140" name="view_profile_btn_panel" user_resize="false"> <button @@ -50,7 +50,7 @@ label="Profile" name="view_profile_btn" top="0" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -58,7 +58,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="add_friend_btn_panel" user_resize="false"> <button @@ -67,7 +67,7 @@ label="Add Friend" name="add_friend_btn" top="5" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -75,7 +75,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="teleport_btn_panel" user_resize="false"> <button @@ -85,7 +85,7 @@ label="Teleport" name="teleport_btn" tool_tip = "Offer to teleport this person" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -93,7 +93,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="share_btn_panel" user_resize="false"> <button @@ -102,7 +102,7 @@ height="23" label="Share" name="share_btn" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -110,7 +110,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="pay_btn_panel" user_resize="false"> <button @@ -119,7 +119,7 @@ height="23" label="Pay" name="pay_btn" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -127,7 +127,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="call_btn_panel" user_resize="false"> <button @@ -135,7 +135,7 @@ height="23" label="Call" name="call_btn" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -143,7 +143,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="end_call_btn_panel" user_resize="false" visible="false"> @@ -152,7 +152,7 @@ height="23" label="End Call" name="end_call_btn" - width="109" /> + width="140" /> </layout_panel> <layout_panel auto_resize="false" @@ -160,7 +160,7 @@ height="25" layout="topleft" min_height="25" - width="109" + width="140" name="voice_ctrls_btn_panel" user_resize="false" visible="false"> @@ -169,7 +169,7 @@ height="23" label="Voice Controls" name="voice_ctrls_btn" - width="109" /> + width="140" /> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 6b136495d2960b53149ff41b56a39d77fd7d47b9..891616b83848492ef16bf8c9eb0bdda1ae24889c 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -24,6 +24,8 @@ top="600" </panel.string> <!-- *NOTE: Custom resize logic for login_html in llpanellogin.cpp --> <web_browser + tab_stop="false" +trusted_content="true" bg_opaque_color="Black" border_visible="false" bottom="600" diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat.xml deleted file mode 100644 index 50a78e1c7152c777fcfbc6ed9d6e4e92115fdc13..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?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_notifications_channel.xml b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml index 3143b0a40ca32dcb62c2c4720ccfbf0c73e8483f..c3dc588ba2bd0eef928b1466abc04cc39fece045 100644 --- a/indra/newview/skins/default/xui/en/panel_notifications_channel.xml +++ b/indra/newview/skins/default/xui/en/panel_notifications_channel.xml @@ -14,6 +14,9 @@ orientation="horizontal" top="20" width="100"> + <layout_panel name="notifications_list_panel" + width="100" + user_resize="true"> <scroll_list draw_heading="true" follows="left|right|top|bottom" @@ -24,7 +27,6 @@ sort_ascending="false" sort_column="2" top="0" - user_resize="true" width="100"> <scroll_list.columns label="Name" @@ -39,6 +41,10 @@ name="date" width="150" /> </scroll_list> + </layout_panel> + <layout_panel name="rejects_list_panel" + width="100" + user_resize="true"> <scroll_list draw_heading="true" follows="left|right|top|bottom" @@ -49,7 +55,6 @@ sort_ascending="false" sort_column="2" top="0" - user_resize="true" width="100"> <scroll_list.columns label="Name" @@ -64,6 +69,7 @@ name="date" width="150" /> </scroll_list> + </layout_panel> </layout_stack> <button follows="left|right|top" diff --git a/indra/newview/skins/default/xui/en/panel_online_status.xml b/indra/newview/skins/default/xui/en/panel_online_status.xml deleted file mode 100644 index 14cb5fffee2fb43ed9dae9353227b70148427a85..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_online_status.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - background_visible="false" - height="152" - label="friend_online_status" - layout="topleft" - left="0" - name="friend_online_status" - top="0" - width="305"> - <avatar_icon - follows="top|left" - height="18" - image_name="Generic_Person" - layout="topleft" - left="3" - mouse_opaque="false" - name="avatar_icon" - top="10" - width="18" /> - <text - font="SansSerifSmall" - follows="all" - height="137" - layout="topleft" - left_pad="5" - name="message" - text_color="white" - top="15" - use_ellipses="true" - value="" - width="285" - word_wrap="true" - max_length="350" /> -</panel> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml index 883cbb30c60f5632751009d4ef4063e19ae3d776..a48a9ce6261a4aa4c73148a847b1fe77ff4ce8aa 100644 --- a/indra/newview/skins/default/xui/en/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/en/panel_outfit_edit.xml @@ -132,6 +132,7 @@ height="18" layout="topleft" name="curr_outfit_name" + parse_urls="false" text_color="LtGray" top_pad="2" value="[Current Outfit]" @@ -183,6 +184,7 @@ It is calculated as border_size + 2*UIResizeBarOverlap follows="all" height="185" width="313" + orientation="vertical" layout="topleft" name="filter_panels" top="0" @@ -514,30 +516,30 @@ It is calculated as border_size + 2*UIResizeBarOverlap user_resize="false" auto_resize="true" width="156"> - <button + <button follows="bottom|left|right" - height="23" - label="Save" + height="23" + label="Save" left="1" - layout="topleft" - name="save_btn" - top="0" - width="155" /> - <button + layout="topleft" + name="save_btn" + top="0" + width="155" /> + <button follows="bottom|right" - height="23" - name="save_flyout_btn" - label="" - layout="topleft" - left_pad="-20" - tab_stop="false" - top="0" - image_selected="SegmentedBtn_Right_Selected_Press" - image_unselected="SegmentedBtn_Right_Off" - image_pressed="SegmentedBtn_Right_Press" - image_pressed_selected="SegmentedBtn_Right_Selected_Press" - image_overlay="Arrow_Small_Up" - width="20"/> + height="23" + name="save_flyout_btn" + label="" + layout="topleft" + left_pad="-20" + tab_stop="false" + top="0" + image_selected="SegmentedBtn_Right_Selected_Press" + image_unselected="SegmentedBtn_Right_Off" + image_pressed="SegmentedBtn_Right_Press" + image_pressed_selected="SegmentedBtn_Right_Selected_Press" + image_overlay="Arrow_Small_Up" + width="20"/> </layout_panel> <layout_panel follows="bottom|left|right" @@ -549,16 +551,16 @@ It is calculated as border_size + 2*UIResizeBarOverlap user_resize="false" auto_resize="true" width="147"> - <button - follows="bottom|left|right" - height="23" + <button + follows="bottom|left|right" + height="23" left="0" - label="Undo Changes" - layout="topleft" - name="revert_btn" - top="0" - tool_tip="Revert to last saved version" - width="147" /> + label="Undo Changes" + layout="topleft" + name="revert_btn" + top="0" + tool_tip="Revert to last saved version" + width="147" /> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml index de147908d84f844343fac4c8ef22d1ca9ae432f0..43d580844fb9f61d49abd5403c1c31bf47d6e597 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml @@ -52,6 +52,7 @@ layout="topleft" left="110" name="picture_name" + parse_urls="false" text_color="white" top="9" use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml index 4f7c4fa9b278172f2e6602618a6b6ebb067ed92c..978b204df9cbcdf8ef166f4f9e16c9b62454bccd 100644 --- a/indra/newview/skins/default/xui/en/panel_picks.xml +++ b/indra/newview/skins/default/xui/en/panel_picks.xml @@ -106,18 +106,6 @@ bg_opaque_color="DkGray2" user_resize="false" auto_resize="true" width="51"> - <button - enabled="false" - follows="bottom|left" - height="18" - image_selected="OptionsMenu_Press" - image_unselected="OptionsMenu_Off" - image_disabled="OptionsMenu_Disabled" - layout="topleft" - left="0" - name="gear_menu_btn" - top_pad="0" - width="18" /> <button follows="bottom|left" height="18" @@ -125,9 +113,10 @@ bg_opaque_color="DkGray2" image_selected="AddItem_Press" image_unselected="AddItem_Off" layout="topleft" - left_pad="15" + left="0" name="new_btn" tool_tip="Create a new pick or classified at the current location" + top="0" width="18" /> </layout_panel> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml index 516457dd931d066b7fa558fca2e2b220403990e4..559df5bec946a8b0e7f16c28e1258d100ae92cd2 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_alerts.xml @@ -57,6 +57,8 @@ left="10" multi_select="true" name="enabled_popups" + sort_column="0" + sort_ascending="true" width="495" /> <button enabled_control="FirstSelectedDisabledPopups" @@ -103,6 +105,8 @@ height="140" layout="topleft" left="10" + sort_column="0" + sort_ascending="true" multi_select="true" name="disabled_popups" width="495" /> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml index 113d5fb6dc37dc89f365320d441218d29063417f..7ae717d0e3d4bd8c675b4ab59f82196c4317ae9d 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml @@ -291,7 +291,7 @@ control_name="RenderReflectionDetail" height="23" layout="topleft" - left_="10" + left_delta="10" top_pad ="0" name="Reflections" width="150"> diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 2c6ceeef2e3df40ce5fa80c5c2602f2b5d876e83..140d16e37f6603c2d4055aa1d366b25169beb683 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -195,7 +195,6 @@ control_name="CacheLocationTopFolder" border_style="line" border_thickness="1" - enabled="false" follows="left|top" font="SansSerif" height="23" @@ -320,7 +319,19 @@ radio_style="false" width="400" top_pad="5"/> - + <check_box + top_delta="4" + enabled="true" + follows="left|top" + height="14" + initial_value="false" + control_name="MediaEnablePopups" + label="Enable media browser pop-ups" + left_delta="0" + mouse_opaque="true" + name="media_popup_enabled" + width="400" + top_pad="5"/> <check_box top_delta="4" enabled="true" diff --git a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml index 6bf00373ea6ee055abe65b293949f6ed1d8030e3..b25fd695c96cc6151f36cff0b567a9c48a990812 100644 --- a/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/en/panel_prim_media_controls.xml @@ -33,10 +33,9 @@ mouse_opaque="false" layout="topleft" user_resize="false" /> - <panel + <layout_panel name="media_progress_indicator" mouse_opaque="false" - follows="left|right|top" height="8" layout="topleft" left="0" @@ -55,7 +54,7 @@ top="0" left="0" tool_tip="Media is Loading"/> - </panel> + </layout_panel> <layout_panel name="right_bookend_bottom" width="0" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index e2cd27c419722eb87de35e1dd14d40cc333d50e1..78b192d4afa06df4e2231a316f091abc53860947 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -344,7 +344,7 @@ name="add_friend_btn_lp" user_resize="false" auto_resize="true" - width="118"> + width="121"> <button follows="bottom|left|right" height="23" @@ -355,7 +355,7 @@ name="add_friend" tool_tip="Offer friendship to the Resident" top="0" - width="117" /> + width="120" /> </layout_panel> <layout_panel @@ -430,8 +430,8 @@ left_pad="3" name="overflow_btn_lp" user_resize="false" - auto_resize="true" - width="27"> + auto_resize="false" + width="24"> <button follows="bottom|left|right" height="23" diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml index 727c5fb7b24f7e21fc8e9f126219edb1587abaee..2868d91cc7229ab0af485bca648574364199afb0 100644 --- a/indra/newview/skins/default/xui/en/panel_progress.xml +++ b/indra/newview/skins/default/xui/en/panel_progress.xml @@ -34,6 +34,7 @@ height="768" layout="topleft" left="0" + orientation="vertical" name="stack2" top="0" width="640"> diff --git a/indra/newview/skins/default/xui/en/panel_region_general_layout.xml b/indra/newview/skins/default/xui/en/panel_region_general_layout.xml deleted file mode 100644 index ffa1a257d579a9ac6d27c998736f2807864e24ba..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/en/panel_region_general_layout.xml +++ /dev/null @@ -1,242 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel - border="true" - follows="top|left" - height="360" - label="Region" - layout="topleft" - left="0" - name="General" - top="360" - width="280"> - <text - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left="10" - name="region_text_lbl" - top="10" - width="100"> - Region: - </text> - <text - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left_delta="50" - name="region_text" - top_delta="0" - width="200"> - unknown - </text> - <text - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left="10" - name="version_channel_text_lbl" - top="30" - width="100"> - Version: - </text> - <text - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left_delta="50" - name="version_channel_text" - top_delta="0" - width="200"> - unknown - </text> - <text - follows="left|top" - font="SansSerif" - height="20" - layout="topleft" - left="10" - name="region_type_lbl" - top="50" - width="100"> - Type: - </text> - <text - 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" /> - <check_box - height="20" - label="Block Fly" - layout="topleft" - left="10" - name="block_fly_check" - top="90" - width="80" /> - <check_box - height="20" - label="Allow Damage" - layout="topleft" - left="10" - name="allow_damage_check" - top="110" - width="80" /> - <check_box - height="20" - label="Restrict Pushing" - layout="topleft" - left="10" - name="restrict_pushobject" - top="130" - width="80" /> - <check_box - height="20" - label="Allow Land Resell" - layout="topleft" - left="10" - name="allow_land_resell_check" - top="160" - width="80" /> - <check_box - height="20" - label="Allow Land Join/Divide" - layout="topleft" - left="10" - name="allow_parcel_changes_check" - top="180" - width="80" /> - <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" /> - <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" /> - <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" /> - <text - 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="Moderate" - layout="topleft" - left_delta="100" - name="access_combo" - top_delta="0" - width="85"> - <combo_box.item - label="Adult" - name="Adult" - value="42" /> - <combo_box.item - label="Moderate" - name="Mature" - value="21" /> - <combo_box.item - label="General" - name="PG" - value="13" /> - </combo_box> - <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 Resident..." - layout="topleft" - left="10" - name="kick_btn" - top_pad="10" - width="250" /> - <button - follows="left|top" - height="20" - label="Teleport Home All Residents..." - 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_delta="0" - name="manage_telehub_btn" - top_pad="20" - width="150" > - <button.commit_callback - function="RegionInfo.ManageTelehub" /> - </button> -</panel> diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml index 9dff00fa0b93019f87595aac6953a5c879b35b78..c5e8bf5803dc57358e56a4599ef39908d5a7c8b2 100644 --- a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml +++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml @@ -79,6 +79,8 @@ layout="topleft" left_delta="0" multi_select="true" + sort_column="0" + sort_ascending="true" name="scripts_list" top_delta="16" width="460"> diff --git a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml index ab3cc036d5b0e914d566a5c635699dd04702f3f6..72b2f5e84fa505230ac281dddedffcedb6f86a3e 100644 --- a/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml +++ b/indra/newview/skins/default/xui/en/panel_sidetray_home_tab.xml @@ -17,15 +17,18 @@ left="10" name="stack" top_pad="10" + orientation="vertical" width="313"> <layout_panel height="550" layout="topleft" left_delta="0" name="browser_layout" + orientation="vertical" top_delta="0" width="313"> <web_browser + trusted_content="true" border_visible="false" follows="all" height="550" diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 43513e1ab6a5e09a7df4bbc118407e1ff8905293..2f52ca660b833608d09f63c95d5c62e59d66484e 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -13,14 +13,6 @@ top="19" tab_stop="false" 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 @@ -126,13 +118,4 @@ name="volume_btn" tool_tip="Global Volume Control" width="16" /> - <text - follows="right|top" - halign="center" - height="12" - layout="topleft" - left_delta="0" - name="stat_btn" - top_delta="0" - width="20"/> </panel> diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml index c1c0f07304e613f611b36b9978d6934691c7331c..b5839878d59ae8c05ebaf4ef5bf6b8f3a6469646 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml @@ -77,6 +77,7 @@ width="333"> font="SansSerifLargeBold" height="20" left="35" + parse_urls="false" text_color="White" top="15" use_ellipses="true" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3fa5c7afec943027cdc66468a5a133bf95850627..8470d91b8cb0bcd51bb10ddf490df3c687bd5e2e 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -321,6 +321,8 @@ <!-- For land type back from the simulator --> <string name="Estate / Full Region">Estate / Full Region</string> + <string name="Estate / Homestead">Estate / Homestead</string> + <string name="Mainland / Homestead">Mainland / Homestead</string> <string name="Mainland / Full Region">Mainland / Full Region</string> <!-- File load/save dialogs --> @@ -3029,7 +3031,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. Ad-hoc Conference </string> <string name="conference-title-incoming"> - [AGENT_NAME] Conference + Conference with [AGENT_NAME] </string> <string name="inventory_item_offered-im"> Inventory item offered @@ -3039,6 +3041,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. </string> + <string name="no_session_message"> + (IM Session Doesn't Exist) + </string> <string name="only_user_message"> You are the only user in this session. </string> diff --git a/indra/newview/skins/default/xui/en/widgets/check_box.xml b/indra/newview/skins/default/xui/en/widgets/check_box.xml index 726ae803fe28c5364c6f49325ef1772bc237c35c..7a60bee338f3d8927f346214ce965f33b2595c40 100644 --- a/indra/newview/skins/default/xui/en/widgets/check_box.xml +++ b/indra/newview/skins/default/xui/en/widgets/check_box.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<check_box text_enabled_color="LabelTextColor" - text_disabled_color="LabelDisabledColor" - font="SansSerifSmall" +<check_box font="SansSerifSmall" follows="left|top"> - <check_box.label_text name="checkbox label" /> + <check_box.label_text name="checkbox label" + text_color="LabelTextColor" + text_readonly_color="LabelDisabledColor"/> <check_box.check_button name="CheckboxCtrl Button" commit_on_return="false" label="" diff --git a/indra/newview/skins/default/xui/en/widgets/hint_popup.xml b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml new file mode 100644 index 0000000000000000000000000000000000000000..92080df1548c933572029bbc52214f62e5cf44bb --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/hint_popup.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<hint_popup + name="hint" + background_opaque="true" + background_visible="true" + chrome="true" + layout="topleft" + bg_opaque_image="hint_background" + distance="24" + left_arrow="hint_arrow_left" + up_arrow="hint_arrow_up" + right_arrow="hint_arrow_right" + down_arrow="hint_arrow_down" + lower_left_arrow="hint_arrow_lower_left" + left_arrow_offset="3" + up_arrow_offset="-2" + right_arrow_offset="-3" + down_arrow_offset="5" + fade_in_time="0.2" + fade_out_time="0.3"> +</hint_popup> diff --git a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml index 48bc021e6dcac6200d7c3f7fcb03dd031e4f2c50..830ea12e414b415e78ab31cba10230b36e5cc061 100644 --- a/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml +++ b/indra/newview/skins/default/xui/en/widgets/scroll_bar.xml @@ -8,18 +8,18 @@ thickness="15"> <up_button image_unselected="ScrollArrow_Up" image_selected="ScrollArrow_Up" - scale_image="true" thickness="15" + scale_image="true" hover_glow_amount="0.35"/> <down_button image_unselected="ScrollArrow_Down" image_selected="ScrollArrow_Down" - scale_image="true" thickness="15" + scale_image="true" hover_glow_amount="0.35"/> <left_button image_unselected="ScrollArrow_Left" image_selected="ScrollArrow_Left" - scale_image="true" thickness="15" + scale_image="true" hover_glow_amount="0.35"/> <right_button image_unselected="ScrollArrow_Right" image_selected="ScrollArrow_Right" - scale_image="true" thickness="15" + scale_image="true" hover_glow_amount="0.35"/> </scroll_bar> 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 index 3878c7a144c9481355954fc7007243d27318a61b..a120b1aec80013ebc3135da66b1b05096c0e4760 100644 --- a/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/simple_text_editor.xml @@ -23,7 +23,4 @@ bg_writeable_color="TextBgWriteableColor" bg_selected_color="EmphasisColor" bg_focus_color="TextBgFocusColor"> - <simple_text_editor.border - bevel_style="in" - follows="all" /> </simple_text_editor> diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml index 180120ec89d22d2e48514c1cfb6444b0a495590d..0f7f50b3129a7a1b14638208f65b6c706e08c6b3 100644 --- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml @@ -2,5 +2,4 @@ <!-- Core parameters are in simple_text_editor.xml --> <text_editor parse_urls="false" - text_readonly_color="LabelDisabledColor" show_context_menu="true"/> diff --git a/indra/newview/skins/default/xui/es/floater_about.xml b/indra/newview/skins/default/xui/es/floater_about.xml index 1af089cfaf9e93dc68040421a2a9d6e00b9bcbdb..bb845e1ee04cfd97389c6d707695de9c05417d70 100644 --- a/indra/newview/skins/default/xui/es/floater_about.xml +++ b/indra/newview/skins/default/xui/es/floater_about.xml @@ -45,7 +45,7 @@ Versión del servidor de voz: [VOICE_VERSION] <text_editor name="credits_editor"> Te ofrecen Second Life Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, y muchos otros. -Gracias a estos Residentes por ayudarnos a estar seguros de que, con todo, esta es la mejor versión: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, y muchos otros. +Gracias a estos Residentes por ayudarnos a estar seguros de que, con todo, esta es la mejor versión: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, y muchos otros. diff --git a/indra/newview/skins/default/xui/es/floater_customize.xml b/indra/newview/skins/default/xui/es/floater_customize.xml deleted file mode 100644 index 77b670d5f0c98b719eed42ad1799b513a47f94d1..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_customize.xml +++ /dev/null @@ -1,530 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="APARIENCIA"> - <tab_container name="customize tab container"> - <text label="Partes del cuerpo" name="body_parts_placeholder"> - Partes del cuerpo - </text> - <panel label="Forma" name="Shape"> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - <button label="Cuerpo" label_selected="Cuerpo" name="Body"/> - <button label="Cabeza" label_selected="Cabeza" name="Head"/> - <button label="Ojos" label_selected="Ojos" name="Eyes"/> - <button label="Orejas" label_selected="Orejas" name="Ears"/> - <button label="Nariz" label_selected="Nariz" name="Nose"/> - <button label="Boca" label_selected="Boca" name="Mouth"/> - <button label="Barbilla" label_selected="Barbilla" name="Chin"/> - <button label="Torso" label_selected="Torso" name="Torso"/> - <button label="Piernas" label_selected="Piernas" name="Legs"/> - <radio_group name="sex radio"> - <radio_item label="Mujer" name="radio" value="0"/> - <radio_item label="Varón" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una anatomÃa nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <text name="no modify instructions"> - No tiene permiso para modificar este Ãtem. - </text> - <text name="Item Action Label"> - Forma: - </text> - <button label="Crear una forma nueva" label_selected="Crear una forma nueva" name="Create New"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button 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" 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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una piel nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <text name="no modify instructions"> - No tiene permiso para modificar este Ãtem. - </text> - <text name="Item Action Label" right="107"> - Piel: - </text> - <texture_picker label="Tatuaje: cabeza" name="Head Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> - <texture_picker label="Tatuaje: superior" name="Upper Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> - <texture_picker label="Tatuaje: inferior" name="Lower Tattoos" tool_tip="Pulse para elegir una imagen" width="90"/> - <button label="Crear una piel nueva" label_selected="Crear una piel nueva" name="Create New"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Pelo" name="Hair"> - <button label="Color" label_selected="Color" name="Color"/> - <button label="Peinado" label_selected="Peinado" name="Style"/> - <button label="Cejas" label_selected="Cejas" name="Eyebrows"/> - <button label="Facial" label_selected="Facial" name="Facial"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situado en [PATH] - </text> - <text name="not worn instructions"> - Ponte un pelo nuevo arrastrándolo desde tu inventario hasta tu avatar. O bien puedes crear uno nuevo partiendo de cero. - </text> - <text name="no modify instructions"> - 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="Crear un pelo nuevo" label_selected="Crear un pelo nuevo" name="Create New"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Ojos" name="Eyes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificables - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situados en [PATH] - </text> - <text name="not worn instructions"> - Ponte unos ojos nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien puedes crear unos nuevos partiendo de cero. - </text> - <text name="no modify instructions"> - 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="Crear unos ojos nuevos" label_selected="Crear unos ojos nuevos" name="Create New"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <text label="Ropa" name="clothes_placeholder"> - Ropas - </text> - <panel label="Camisa" name="Shirt"> - <texture_picker label="Tela" name="Fabric" tool_tip="Pulse para elegir una imagen"/> - <color_swatch label="Color/Tinte" name="Color/Tint" tool_tip="Pulsa para abrir el selector de color"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una camisa nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Crear unos pantalones nuevos" label_selected="Crear unos pantalones nuevos" name="Create New" width="185"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificables - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situados en [PATH] - </text> - <text name="not worn instructions"> - Ponte unos pantalones nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien puedes crear unos nuevos partiendo de cero. - </text> - <text name="no modify instructions"> - No tiene permiso para modificar este Ãtem. - </text> - <text name="Item Action Label" right="107"> - Pantalones: - </text> - </panel> - <panel label="Zapatos" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificables - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situados en [PATH] - </text> - <text name="not worn instructions"> - Ponte unos zapatos nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien puedes crear unos nuevos partiendo de cero. - </text> - <button label="Crear unos zapatos nuevos" label_selected="Crear unos zapatos nuevos" name="Create New"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Calcetines" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificables - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situados en [PATH] - </text> - <text name="not worn instructions"> - Ponte unos calcetines nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien puedes crear unos nuevos partiendo de cero. - </text> - <button label="Crear unos calcetines nuevos" label_selected="Crear unos calcetines nuevos" name="Create New" width="185"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Chaqueta" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una chaqueta nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <button label="Crear una chaqueta nueva" label_selected="Crear una chaqueta nueva" name="Create New"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Guantes" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificables - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situados en [PATH] - </text> - <text name="not worn instructions"> - Ponte unos guantes nuevos arrastrándolos desde tu inventario hasta tu avatar. O bien puedes crear unos nuevos partiendo de cero. - </text> - <button label="Crear unos guantes nuevos" label_selected="Crear unos guantes nuevos" name="Create New"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarlos" label_selected="Quitarlos" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Camiseta" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una camiseta nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <button label="Crear una camiseta nueva" label_selected="Crear una camiseta nueva" name="Create New"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button 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"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una ropa interior nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <button label="Crear una ropa interior nueva" label_selected="Crear una ropa interior nueva" name="Create New" width="185"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Falda" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no lleva - </text> - <text name="path"> - Situada en [PATH] - </text> - <text name="not worn instructions"> - Ponte una falda nueva arrastrándola desde tu inventario hasta tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <button label="Crear una falda nueva" label_selected="Crear una falda nueva" name="Create New"/> - <text name="no modify instructions"> - 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="Pulsa para abrir el selector de color"/> - <button label="Quitarla" label_selected="Quitarla" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" left="113" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Restablecer" label_selected="Restablecer" name="Revert"/> - </panel> - <panel label="Tatuaje" name="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no puesto - </text> - <text name="path"> - Situado en [PATH] - </text> - <text name="not worn instructions"> - Pon un tatuaje nuevo arrastrándolo desde tu inventario a tu avatar. O bien puedes crear uno nuevo partiendo de cero. - </text> - <button label="Crear un tatuaje nuevo" label_selected="Crear un tatuaje nuevo" name="Create New"/> - <text name="no modify instructions"> - No tienes permiso para modificar este artÃculo. - </text> - <text name="Item Action Label"> - Tatuaje: - </text> - <texture_picker label="Tatuaje de la cabeza" name="Head Tattoo" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Tatuaje superior" name="Upper Tattoo" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Tatuaje inferior" name="Lower Tattoo" tool_tip="Pulsa para elegir una imagen"/> - <button label="Quitarme" label_selected="Quitarme" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Revertir" label_selected="Revertir" name="Revert"/> - </panel> - <panel label="Alfa" name="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: no modificable - </text> - <text name="title_loading"> - [DESC]: cargando... - </text> - <text name="title_not_worn"> - [DESC]: no puesto - </text> - <text name="path"> - Situado en [PATH] - </text> - <text name="not worn instructions"> - Pon una capa Alfa nueva arrastrándola desde tu inventario a tu avatar. O bien puedes crear una nueva partiendo de cero. - </text> - <button label="Crear una capa Alfa nueva" label_selected="Crear una capa Alfa nueva" name="Create New"/> - <text name="no modify instructions"> - No tienes permiso para modificar este artÃculo. - </text> - <text name="Item Action Label"> - Alfa: - </text> - <texture_picker label="Alfa inferior" name="Lower Alpha" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Alfa superior" name="Upper Alpha" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Alfa de la cabeza" name="Head Alpha" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Alfa de los ojos" name="Eye Alpha" tool_tip="Pulsa para elegir una imagen"/> - <texture_picker label="Alfa del pelo" name="Hair Alpha" tool_tip="Pulsa para elegir una imagen"/> - <button label="Quitarme" label_selected="Quitarme" name="Take Off"/> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Guardar como..." label_selected="Guardar como..." name="Save As"/> - <button label="Revertir" label_selected="Revertir" name="Revert"/> - </panel> - </tab_container> - <scroll_container name="panel_container"/> - <button label="Información del script" label_selected="Información del script" name="script_info" tool_tip="Mostrar los scripts anexados a tu avatar"/> - <button label="Hacer un vestuario" label_selected="Hacer un vestuario" name="make_outfit_btn"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</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 deleted file mode 100644 index eadf04a4170103c42aaaf6b875903d9da17e3724..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?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_im.xml b/indra/newview/skins/default/xui/es/floater_im.xml deleted file mode 100644 index 3850b94fd67fd4ad678c88caa565b49148ef99fe..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Mensaje Instantáneo"> - <string name="only_user_message"> - Eres el único Residente en esta sesión. - </string> - <string name="offline_message"> - [FIRST] [LAST] no está conectado. - </string> - <string name="invite_message"> - Pulse el botón [BUTTON NAME] para aceptar/conectar este chat de voz. - </string> - <string name="muted_message"> - Has ignorado a este Residente. Enviándole un mensaje, automáticamente dejarás de ignorarle. - </string> - <string name="generic_request_error"> - Error al hacer lo solicitado; por favor, inténtelo más tarde. - </string> - <string name="insufficient_perms_error"> - Usted no tiene permisos suficientes. - </string> - <string name="session_does_not_exist_error"> - La sesión ya acabó - </string> - <string name="no_ability_error"> - Usted no tiene esa capacidad. - </string> - <string name="not_a_mod_error"> - Usted no es un moderador de la sesión. - </string> - <string name="muted_error"> - Un moderador del grupo le ha desactivado el chat de texto. - </string> - <string name="add_session_event"> - No es posible añadir Residentes a la sesión de chat con [RECIPIENT]. - </string> - <string name="message_session_event"> - No se ha podido enviar su mensaje a la sesión de chat con [RECIPIENT]. - </string> - <string name="removed_from_group"> - Ha sido eliminado del grupo. - </string> - <string name="close_on_no_ability"> - Usted ya no tendrá más la capacidad de estar en la sesión de chat. - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/es/floater_im_session.xml b/indra/newview/skins/default/xui/es/floater_im_session.xml index c7312e609bfedad222121949b80e6e2d88b08b48..3d9d17fc81ada808766e00cd9c8bb4b0bf33ad78 100644 --- a/indra/newview/skins/default/xui/es/floater_im_session.xml +++ b/indra/newview/skins/default/xui/es/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="Panel de control de MI" name="panel_im_control_panel"/> <layout_panel> <line_editor label="A" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml index 73e947f1f71691da6dd3931d1e492c900287b07c..fa01a4a63552bf454577233a6b514a83aee30925 100644 --- a/indra/newview/skins/default/xui/es/floater_map.xml +++ b/indra/newview/skins/default/xui/es/floater_map.xml @@ -1,28 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Map" title=""> - <floater.string name="mini_map_north"> - N - </floater.string> - <floater.string name="mini_map_east"> - E - </floater.string> - <floater.string name="mini_map_west"> - O - </floater.string> - <floater.string name="mini_map_south"> - S - </floater.string> - <floater.string name="mini_map_southeast"> - SE - </floater.string> - <floater.string name="mini_map_northeast"> - NE - </floater.string> - <floater.string name="mini_map_southwest"> - SO - </floater.string> - <floater.string name="mini_map_northwest"> - NO + <floater.string name="ToolTipMsg"> + [REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica) </floater.string> <floater.string name="mini_map_caption"> MINIMAPA diff --git a/indra/newview/skins/default/xui/es/floater_my_friends.xml b/indra/newview/skins/default/xui/es/floater_my_friends.xml deleted file mode 100644 index 07f362560b99bac0979368b4c5d0d65a97144756..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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_nearby_chat.xml b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml index d30a39f7256f7df097605552f8c58cd0ad94d606..1fee9ab056668d2770445fd8f3a45dbf000cec78 100644 --- a/indra/newview/skins/default/xui/es/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/es/floater_nearby_chat.xml @@ -1,2 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="CHAT"/> +<floater name="nearby_chat" title="CHAT"> + <check_box label="Traducir chat (mediante Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml deleted file mode 100644 index 9f9902a3a0191de0f19c8254ea78deebc8fc0e08..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Guardar el vestuario"> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Guardar lo que llevo puesto -como un vestuario nuevo: - </text> - <line_editor name="name ed"> - [DESC] (nuevo) - </line_editor> -</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 deleted file mode 100644 index d9c9c51ba8d647a98b6a4df46384ec054865b63e..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMACIÓN DEL CLASIFICADO"> - <floater.string name="Title"> - Clasificado: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_event.xml b/indra/newview/skins/default/xui/es/floater_preview_event.xml deleted file mode 100644 index 7edd4f9e3fdc08abe68d03c91a4515eebf8803e8..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMACIÓN DEL EVENTO"> - <floater.string name="Title"> - Evento: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml deleted file mode 100644 index f5b771c6e744cda78dd3e27f7f13c33f07c3b36f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml deleted file mode 100644 index ea955f9727e10cf9f070358f376a88c2d9d90fd0..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"> - <text name="trigger_label"> - Chat : - </text> - <text name="key_label"> - Teclado: - </text> - <combo_box label="Ninguno/a" name="modifier_combo"/> - <combo_box label="Ninguno/a" name="key_combo"/> - <text name="replace_text" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'QuerÃa decir hola' por 'QuerÃa decir qué tal' en cuanto realices el gesto."> - Reemplazar por: - </text> - <line_editor name="replace_editor" tool_tip="Reemplaza la/s palabra/s clave con estas palabras. Por ejemplo, si cambias la palabra clave 'hola' por 'qué tal', se cambiará en el chat 'QuerÃa decir hola' por 'QuerÃa decir qué tal' en cuanto realices el gesto."/> -</floater> diff --git a/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml deleted file mode 100644 index f5b771c6e744cda78dd3e27f7f13c33f07c3b36f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATAJO DE TECLADO PARA GESTOS"/> diff --git a/indra/newview/skins/default/xui/es/floater_statistics.xml b/indra/newview/skins/default/xui/es/floater_statistics.xml deleted file mode 100644 index c9b0a76df0c6d969d0e1309ed3af73214c4bafac..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?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 9637544f4e01bdc96426424b849b9edd0ea9dc02..9867f1b57590ced4b62ecf2ddec353a5a4530fa5 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title="" width="288"> +<floater name="toolbox floater" short_title="HERRAMIENTAS DE CONSTRUCCIÓN" title=""> <floater.string name="status_rotate"> Arrastra las bandas de color para girar el objeto. </floater.string> @@ -182,10 +182,10 @@ <text name="Group:"> Grupo: </text> - <button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/> <name_box initial_value="Cargando..." name="Group Name Proxy"/> - <button label="Transferir" label_selected="Transferir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> + <button label="Configurar..." label_selected="Configurar..." name="button set group" tool_tip="Elige un grupo con el que compartir los permisos de este objeto"/> <check_box label="Compartir" name="checkbox share with group" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación en este objeto. Debes transferirlo para activar las restricciones según los roles."/> + <button label="Transferir" label_selected="Transferir" name="button deed" tool_tip="La transferencia entrega este objeto con los permisos del próximo propietario. Los objetos compartidos por el grupo pueden ser transferidos por un oficial del grupo."/> <text name="label click action" width="180"> Al tocarlo: </text> @@ -437,7 +437,8 @@ <combo_box.item label="succión" name="suction"/> <combo_box.item label="tejido" name="weave"/> </combo_box> - <text name="tex scale"> + <check_box initial_value="falso" label="Alinear caras del plano" name="checkbox planar align" tool_tip="Alinear texturas en todas las caras seleccionadas con la última cara seleccionada. Requiere la representación de texturas en el plano."/> + <text name="rpt"> Repeticiones por cara </text> <spinner label="Horizontal (U)" name="TexScaleU"/> diff --git a/indra/newview/skins/default/xui/es/floater_voice_controls.xml b/indra/newview/skins/default/xui/es/floater_voice_controls.xml index 51adeb4dff521e6c11c133f7ec3a20ee1379c8f9..6f4782417df748a50fd3acfc9d2d5e4c6e67073e 100644 --- a/indra/newview/skins/default/xui/es/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/es/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mi avatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Colgar" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Colgar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml deleted file mode 100644 index bf96ed53ce15068679320266e81caad5ab089b7a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=" "> - <button label="Guardar" label_selected="Guardar" name="Save"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Guardar el Ãtem en mi inventario como: - </text> - <line_editor name="name ed"> - Nuevo [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..f2367c72a3c6961969b0ed4c335d2414ab83a6bf --- /dev/null +++ b/indra/newview/skins/default/xui/es/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="Ordenar por los más recientes" name="sort_by_most_recent"/> + <menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/> + <menu_item_check label="Ordenar por tipo" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml index dc4efa1ce829d419549abcbc9dcc7d6c992b52d7..ab76c92d656eec08e0666a414a2fd497d0f8744a 100644 --- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml @@ -3,6 +3,7 @@ <menu_item_call label="Tocar" name="Attachment Object Touch"/> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Quitar" name="Detach"/> + <menu_item_call label="Sentarte" name="Sit Down Here"/> <menu_item_call label="Levantarme" name="Stand Up"/> <menu_item_call label="Cambiar vestuario" name="Change Outfit"/> <menu_item_call label="Editar mi vestuario" name="Edit Outfit"/> diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml index d347a7d0c4de6782e16d35fe0b3037f021179bd5..50f8384b0f265fb8da1d141000b72cb375e14380 100644 --- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> + <menu_item_call label="Sentarte" name="Sit Down Here"/> <menu_item_call label="Levantarme" name="Stand Up"/> - <context_menu label="Quitarme â–¶" name="Take Off >"> - <context_menu label="Ropas â–¶" name="Clothes >"> + <context_menu label="Quitarme" name="Take Off >"> + <context_menu label="Ropas" name="Clothes >"> <menu_item_call label="Camisa" name="Shirt"/> <menu_item_call label="Pantalón" name="Pants"/> <menu_item_call label="Falda" name="Skirt"/> @@ -16,8 +17,8 @@ <menu_item_call label="Alfa" name="Self Alpha"/> <menu_item_call label="Toda la ropa" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Desanexar â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Quitar" name="Object Detach"/> <menu_item_call label="Quitarse todo" name="Detach All"/> </context_menu> <menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml index af85b833e966516c6729ddd8e201fea3e898d594..bcdc25894f4f609ae983a65424c272270e0abc54 100644 --- a/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_inspect_object_gear.xml @@ -9,6 +9,7 @@ <menu_item_call label="Abrir" name="open"/> <menu_item_call label="Editar" name="edit"/> <menu_item_call label="Ponerse" name="wear"/> + <menu_item_call label="Añadir" name="add"/> <menu_item_call label="Denunciar" name="report"/> <menu_item_call label="Ignorar" name="block"/> <menu_item_call label="Acercar el zoom" name="zoom_in"/> diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml index 4b56984541a18b3bf520c28d3699e9797d18ff7b..c8a1e9d9da82bda2da74bcba2e93cf7b7faf3fac 100644 --- a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> + <menu_item_call label="Sentarte" name="sit_down_here"/> <menu_item_call label="Levantarme" name="stand_up"/> <menu_item_call label="Cambiar vestuario" name="change_outfit"/> <menu_item_call label="Mi perfil" name="my_profile"/> diff --git a/indra/newview/skins/default/xui/es/menu_mini_map.xml b/indra/newview/skins/default/xui/es/menu_mini_map.xml index 8e464177fed5914ad13fc35bc7f1f579bed88828..41dc817551e8671f4316bfc1223a9c786c3774bd 100644 --- a/indra/newview/skins/default/xui/es/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/es/menu_mini_map.xml @@ -4,6 +4,7 @@ <menu_item_call label="Zoom medio" name="Zoom Medium"/> <menu_item_call label="Zoom lejos" name="Zoom Far"/> <menu_item_check label="Girar el mapa" name="Rotate Map"/> + <menu_item_check label="Centrar automáticamente" name="Auto Center"/> <menu_item_call label="Parar la búsqueda" name="Stop Tracking"/> <menu_item_call label="Mapa del mundo" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml index 060d806c552d6b299a72d0cfc96a4704b2d66253..06121e0c09a143e0d05e4a8b6c783bbae9caf7d3 100644 --- a/indra/newview/skins/default/xui/es/menu_object.xml +++ b/indra/newview/skins/default/xui/es/menu_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> <menu_item_call label="Tocar" name="Object Touch"> - <on_enable parameter="Tocar" name="EnableTouch"/> + <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/> </menu_item_call> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Construir" name="Build"/> @@ -10,18 +10,18 @@ <menu_item_call label="Levantarme" name="Object Stand Up"/> <menu_item_call label="Perfil del objeto" name="Object Inspect"/> <menu_item_call label="Acercar el zoom" name="Zoom In"/> - <context_menu label="Ponerme â–¶" name="Put On"> + <context_menu label="Ponerme" name="Put On"> <menu_item_call label="Ponerme" name="Wear"/> - <context_menu label="Anexar â–¶" name="Object Attach"/> - <context_menu label="Anexar como HUD â–¶" name="Object Attach HUD"/> + <menu_item_call label="Añadir" name="Add"/> + <context_menu label="Anexar" name="Object Attach"/> + <context_menu label="Anexar el HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Quitarme â–¶" name="Remove"> + <context_menu label="Quitar" name="Remove"> <menu_item_call label="Denunciar una infracción" name="Report Abuse..."/> <menu_item_call label="Ignorar" name="Object Mute"/> <menu_item_call label="Devolver" name="Return..."/> <menu_item_call label="Eliminar" name="Delete"/> </context_menu> - <menu_item_call label="Comprar" name="Pie Object Bye"/> <menu_item_call label="Tomar" name="Pie Object Take"/> <menu_item_call label="Coger una copia" name="Take Copy"/> <menu_item_call label="Pagar" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/es/menu_participant_list.xml b/indra/newview/skins/default/xui/es/menu_participant_list.xml index fd8bd05230482a68b2e5b3b05e7b015626cc7f54..f6eedd11705485a8a867c7b20cbc6bd3ea5c2b10 100644 --- a/indra/newview/skins/default/xui/es/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/es/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="Ver los iconos de la gente" name="View Icons"/> <menu_item_check label="Ignorar la voz" name="Block/Unblock"/> <menu_item_check label="Ignorar el texto" name="MuteText"/> - <context_menu label="Opciones del moderador >" name="Moderator Options"> + <context_menu label="Opciones del moderador" name="Moderator Options"> <menu_item_check label="Permitir el chat de texto" name="AllowTextChat"/> <menu_item_call label="Ignorar a este participante" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Quitar el silencio a este participante" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml index 0e883be00e3de4e50b595ed315f8650dd351d3ee..3899ad9e961cf13d9ca82a7f2a6740b27fb477c8 100644 --- a/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/es/menu_people_friends_view_sort.xml @@ -3,5 +3,6 @@ <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/> <menu_item_check label="Ordenar por estatus" name="sort_status"/> <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> + <menu_item_check label="Ver permisos concedidos" name="view_permissions"/> <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml index 4ab600099406768839e68180f21a2905035569e1..227c5ebe58f06f321dfc9e70739fcf622d71a2d8 100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby_multiselect.xml @@ -6,4 +6,5 @@ <menu_item_call label="Llamar" name="Call"/> <menu_item_call label="Compartir" name="Share"/> <menu_item_call label="Pagar" name="Pay"/> + <menu_item_call label="Ofrecer teleporte" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml index 66c0bf93116ed1d9bfc035aaa5c748d857176f50..4ad631ac10ce7e649376b822384be1cc0a816881 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -94,7 +94,6 @@ <menu_item_call label="Configurar scripts como no ejecutándose" name="Set Scripts to Not Running"/> </menu> <menu label="Opciones" name="Options"> - <menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/> <menu_item_check label="Mostrar los permisos avanzados" name="DebugPermissions"/> <menu_item_check label="Seleccionar sólo mis objetos" name="Select Only My Objects"/> <menu_item_check label="Seleccionar sólo los objetos movibles" name="Select Only Movable Objects"/> @@ -121,7 +120,6 @@ <menu_item_call label="Acerca de [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avanzado" name="Advanced"> - <menu_item_check label="Mostrar el menú Avanzado" name="Show Advanced Menu"/> <menu_item_call label="Parar mis animaciones" name="Stop Animating My Avatar"/> <menu_item_call label="Recargar las texturas" name="Rebake Texture"/> <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/> @@ -168,7 +166,6 @@ <menu_item_check label="Niebla" name="Fog"/> <menu_item_check label="Objetos flexibles" name="Flexible Objects"/> </menu> - <menu_item_check label="Ejecutar múltiples temas" name="Run Multiple Threads"/> <menu_item_check label="Usar Plugin Read Thread" name="Use Plugin Read Thread"/> <menu_item_call label="Vaciar la caché de grupo" name="ClearGroupCache"/> <menu_item_check label="Vista subjetiva suavizada" name="Mouse Smoothing"/> @@ -177,7 +174,6 @@ <menu_item_check label="Buscar" name="Search"/> <menu_item_call label="Recuperar las teclas" name="Release Keys"/> <menu_item_call label="Interfaz en el tamaño predeterminado" name="Set UI Size to Default"/> - <menu_item_check label="Mostrar el menú Avanzado - acceso directo antiguo" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Correr siempre" name="Always Run"/> <menu_item_check label="Volar" name="Fly"/> <menu_item_call label="Cerrar la ventana" name="Close Window"/> @@ -197,6 +193,7 @@ <menu_item_call label="Acercar el zoom" name="Zoom In"/> <menu_item_call label="Zoom por defecto" name="Zoom Default"/> <menu_item_call label="Alejar el zoom" name="Zoom Out"/> + <menu_item_check label="Mostrar el menú Avanzado" name="Show Advanced Menu"/> </menu> <menu_item_call label="Mostrar las configuraciones del depurador" name="Debug Settings"/> <menu_item_check label="Mostrar el menú 'Develop'" name="Debug Mode"/> @@ -239,9 +236,15 @@ <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Global Illumination" name="Global Illumination"/> + <menu_item_check label="Luces y sombras" name="Lighting and Shadows"/> + <menu_item_check label="Sombras del sol/la luna/proyectores" name="Shadows from Sun/Moon/Projectors"/> + <menu_item_check label="SSAO y sombras suavizadas" name="SSAO and Shadow Smoothing"/> + <menu_item_check label="Iluminación global (experimental)" name="Global Illumination"/> + <menu_item_check label="Capas alfa automáticas (deferidas)" name="Automatic Alpha Masks (deferred)"/> + <menu_item_check label="Capas alfa automáticas (no deferidas)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Animation Textures" name="Animation Textures"/> <menu_item_check label="Disable Textures" name="Disable Textures"/> + <menu_item_check label="Atlas de texturas (experimental)" name="Texture Atlas"/> <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Hover Glow Objects" name="Hover Glow Objects"/> @@ -261,7 +264,8 @@ <menu_item_call label="Web Browser Test" name="Web Browser Test"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> <menu_item_call label="Memory Stats" name="Memory Stats"/> - <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Double-Click Auto-Pilot" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Teleportar mediante doble clic" name="DoubleClick Teleport"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml index 5b3d7d8cb378f8b8c6b6df3ccfd9f64364299e2b..4bffa689e740237a76869534c4876f56dbf235d9 100644 --- a/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/es/menu_wearable_list_item.xml @@ -5,10 +5,10 @@ <menu_item_call label="Añadir" name="wear_add"/> <menu_item_call label="Quitarme / Quitar" name="take_off_or_detach"/> <menu_item_call label="Quitar" name="detach"/> - <context_menu label="Anexar a â–¶" name="wearable_attach_to"/> - <context_menu label="Anexar al HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Anexar a" name="wearable_attach_to"/> + <context_menu label="Anexar al HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Quitarme" name="take_off"/> <menu_item_call label="Editar" name="edit"/> - <menu_item_call label="Perfil del objeto" name="object_profile"/> + <menu_item_call label="Perfil del elemento" name="object_profile"/> <menu_item_call label="Mostrar original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml index 5f68e1687fdc2a0fa1651e6ca0e946b4946d8f7e..9d9ce75e5390b3958046209acabaf95f819c9e12 100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Gear Wearing"> <menu_item_call label="Editar el vestuario" name="edit"/> + <menu_item_call label="Quitarme" name="takeoff"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml index 56f4afda9bf61e274d622b75de00e0fc1bf6a2e1..64fd7ce4cf743c014b47403879af9092939dce0b 100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_tab.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Wearing"> + <menu_item_call label="Quitarme" name="take_off"/> + <menu_item_call label="Quitar" name="detach"/> <menu_item_call label="Editar el vestuario" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index e9eda790dd9dda9e1c8c645b6b9fd92f8359a917..91d47061c4d37716101891619f470f24006466a5 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -1822,6 +1822,10 @@ Dado que estos objetos tienen scripts, moverlos a tu inventario puede provocar u ¿Estás seguro de que quieres salir? <usetemplate ignoretext="Confirmar antes de salir" name="okcancelignore" notext="No salir" yestext="Salir"/> </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Confirmar antes de eliminar elementos" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="HelpReportAbuseEmailLL"> Usa esta herramienta para denunciar violaciones de las [http://secondlife.com/corporate/tos.php Condiciones del Servicio] o las [http://secondlife.com/corporate/cs.php Normas de la Comunidad]. @@ -2749,9 +2753,13 @@ Comprueba la configuración de la red y del servidor de seguridad. ( [EXISTENCE] segundos vivo) El avatar '[NAME]' ya estaba totalmente cargado al salir. </notification> - <notification name="AvatarRezSelfBakeNotification"> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ( [EXISTENCE] segundos con vida ) +Has actualizado una textura obtenida mediante bake de [RESOLUTION] para '[BODYREGION]' después de [TIME] segundos. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> ( [EXISTENCE] segundos con vida ) -Has [ACTION] una textura obtenida mediante bake de [RESOLUTION] para '[BODYREGION]' después de [TIME] segundos. +Has actualizado de manera local una textura obtenida mediante bake de [RESOLUTION] para '[BODYREGION]' después de [TIME] segundos. </notification> <notification name="ConfirmLeaveCall"> ¿Estás seguro de que deseas salir de esta multiconferencia? diff --git a/indra/newview/skins/default/xui/es/panel_audio_device.xml b/indra/newview/skins/default/xui/es/panel_audio_device.xml deleted file mode 100644 index d20a0af4fbcafb8d285b42745a7768e58a0a01a2..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?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_avatar_list_item.xml b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml index e1ffc14823476cf41c2bdb97f0186122b87e96f2..09221c5599b211fcd9a80cccc419f55b1b3d9372 100644 --- a/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/es/panel_avatar_list_item.xml @@ -22,5 +22,9 @@ [COUNT] año/s </string> <text name="avatar_name" value="Desconocido"/> + <icon name="permission_edit_theirs_icon" tool_tip="Puedes editar los objetos de este amigo"/> + <icon name="permission_edit_mine_icon" tool_tip="Este amigo puede editar, eliminar o manipular tus objetos"/> + <icon name="permission_map_icon" tool_tip="Este amigo puede encontrarte en el mapa"/> + <icon name="permission_online_icon" tool_tip="Este amigo puede ver cuándo estás conectado"/> <button name="profile_btn" tool_tip="Ver el perfil"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_bottomtray.xml b/indra/newview/skins/default/xui/es/panel_bottomtray.xml index 5ea09ed79580b3119cccbadc36430a8e7ce5a8ec..2b1d017a2da8dea69b203c62afaf78c2f8009ced 100644 --- a/indra/newview/skins/default/xui/es/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/es/panel_bottomtray.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> <string name="SpeakBtnToolTip" value="Activa/Desactiva el micrófono"/> <string name="VoiceControlBtnToolTip" value="Muestra/Oculta el panel del control de voz"/> <layout_stack name="toolbar_stack"> @@ -12,28 +13,25 @@ <gesture_combo_list label="Gestos" name="Gesture" tool_tip="Muestra/Oculta los gestos"/> </layout_panel> <layout_panel name="movement_panel"> - <button label="Moverme" name="movement_btn" tool_tip="Muestra/Oculta los controles del movimiento"/> + <bottomtray_button label="Moverme" name="movement_btn" tool_tip="Muestra/Oculta los controles del movimiento"/> </layout_panel> <layout_panel name="cam_panel"> - <button label="Visión" name="camera_btn" tool_tip="Muestra/Oculta los controles de la cámara"/> + <bottomtray_button label="Visión" name="camera_btn" tool_tip="Muestra/Oculta los controles de la cámara"/> </layout_panel> <layout_panel name="snapshot_panel"> - <button label="" name="snapshots" tool_tip="Hacer una foto"/> - </layout_panel> - <layout_panel name="sidebar_btn_panel"> - <button label="Barra lateral" name="sidebar_btn" tool_tip="Muestra/Oculta la barra lateral"/> + <bottomtray_button label="" name="snapshots" tool_tip="Hacer una foto"/> </layout_panel> <layout_panel name="build_btn_panel"> - <button label="Construir" name="build_btn" tool_tip="Muestra/Oculta las herramientas de construcción"/> + <bottomtray_button label="Construir" name="build_btn" tool_tip="Muestra/Oculta las herramientas de construcción"/> </layout_panel> <layout_panel name="search_btn_panel"> - <button label="Buscar" name="search_btn" tool_tip="Muestra/Oculta la búsqueda"/> + <bottomtray_button label="Buscar" name="search_btn" tool_tip="Muestra/Oculta la búsqueda"/> </layout_panel> <layout_panel name="world_map_btn_panel"> - <button label="Mapa" name="world_map_btn" tool_tip="Muestra/Oculta el mapa del mundo"/> + <bottomtray_button label="Mapa" name="world_map_btn" tool_tip="Muestra/Oculta el mapa del mundo"/> </layout_panel> <layout_panel name="mini_map_btn_panel"> - <button label="Minimapa" name="mini_map_btn" tool_tip="Muestra/Oculta el minimapa"/> + <bottomtray_button label="Minimapa" name="mini_map_btn" tool_tip="Muestra/Oculta el minimapa"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/default/xui/es/panel_classified_info.xml b/indra/newview/skins/default/xui/es/panel_classified_info.xml index 35fe174970641febf693f1eea9665596845690a0..3c168b9e5307ae800ecf83d42d86fa82c601dedd 100644 --- a/indra/newview/skins/default/xui/es/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/es/panel_classified_info.xml @@ -46,8 +46,16 @@ </panel> </scroll_container> <panel name="buttons"> - <button label="Teleportar" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Editar" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleporte" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_classified.xml b/indra/newview/skins/default/xui/es/panel_edit_classified.xml index 6d53b401c0eadfd081bb441749080b9557942a07..ffad843732dd7ba2f4d4fa2269ac249966e7f9f3 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_classified.xml @@ -36,13 +36,19 @@ <icons_combo_box.item label="Contenido moderado" name="mature_ci" value="Moderado"/> <icons_combo_box.item label="Contenido general" name="pg_ci" value="General"/> </icons_combo_box> + <check_box label="Renovar automáticamente cada semana" name="auto_renew"/> <text name="price_for_listing_label" value="Precio por publicarlo:"/> <spinner label="L$" name="price_for_listing" tool_tip="Precio por publicarlo." value="50"/> - <check_box label="Renovar automáticamente cada semana" name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="[LABEL]" name="save_changes_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="[LABEL]" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml index f8a03d230239a180bdfdeb534998edb9de822f4d..9b101ee4bae9f9c0180b18b6a38086728fe748d0 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml @@ -25,7 +25,13 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Guardar" name="save_changes_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Guardar" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="layout_panel1"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_profile.xml b/indra/newview/skins/default/xui/es/panel_edit_profile.xml index e7bd7aba1778b4a28dbf2e5abf022b6cabbdd6c4..8da8a9771b3ee661926cbad43ee7f89d51853b38 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_profile.xml @@ -45,7 +45,13 @@ </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Guardar cambios" name="save_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="Guardar cambios" name="save_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml index 09321f7b91f7565cbcad61d154f219bfcb441cc0..15c683f3756ad90a240e7837a8670a790d42a2c5 100644 --- a/indra/newview/skins/default/xui/es/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/es/panel_edit_wearable.xml @@ -102,7 +102,13 @@ <icon name="female_icon" tool_tip="Mujer"/> </panel> <panel name="button_panel"> - <button label="Guardar como" name="save_as_button"/> - <button label="Deshacer los cambios" name="revert_button"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="save_as_btn_lp"> + <button label="Guardar como" name="save_as_button"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Deshacer los cambios" name="revert_button"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_friends.xml b/indra/newview/skins/default/xui/es/panel_friends.xml deleted file mode 100644 index e1cac7c2c364f8cfbe8ccb8962cf2e0239122b7b..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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="Teleporte" 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 amistad a un Residente"/> -</panel> diff --git a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml index 872dfb13d762b195170bf3df32fb841cff940f84..09c4eec4d927d5ffe69395319e97915be2a733d4 100644 --- a/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/es/panel_group_info_sidetray.xml @@ -13,7 +13,7 @@ Gratis </panel.string> <panel name="group_info_top"> - <text name="group_name" value="(Cargando...)"/> + <text_editor name="group_name" value="(Cargando...)"/> <line_editor label="Escribe aquà el nombre de tu nuevo grupo" name="group_name_editor"/> </panel> <layout_stack name="layout"> @@ -25,9 +25,15 @@ <accordion_tab name="group_land_tab" title="Terreno/Bienes"/> </accordion> </layout_panel> - <layout_panel name="button_row"> + </layout_stack> + <layout_stack name="button_row_ls"> + <layout_panel name="btn_chat_lp"> <button label="Chat" name="btn_chat"/> + </layout_panel> + <layout_panel name="call_btn_lp"> <button label="Llamar al grupo" name="btn_call" tool_tip="Llama a este grupo"/> + </layout_panel> + <layout_panel name="btn_apply_lp"> <button label="Guardar" label_selected="Guardar" name="btn_apply"/> <button label="Crear un grupo" name="btn_create" tool_tip="Crea un grupo nuevo"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/es/panel_groups.xml b/indra/newview/skins/default/xui/es/panel_groups.xml deleted file mode 100644 index 232de855224a5343262fe8216fe8f902d9300e43..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_groups.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <scroll_list bottom="50" name="group list"/> - <text bottom="16" height="32" name="groupdesc" width="268"> - El grupo que tiene activado actualmente se -muestra en negrilla. - </text> - <text bottom="3" name="groupcount" width="268"> - 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_landmarks.xml b/indra/newview/skins/default/xui/es/panel_landmarks.xml index 8f476403c77dad1686b73ee5efd5569ca60965b2..b92685f0aec8846d27714afbefa881457b6aeba2 100644 --- a/indra/newview/skins/default/xui/es/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/es/panel_landmarks.xml @@ -7,8 +7,16 @@ <accordion_tab name="tab_library" title="Biblioteca"/> </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Ver más opciones"/> - <button name="add_btn" tool_tip="Añadir un nuevo hito"/> - <dnd_button name="trash_btn" tool_tip="Quitar el hito seleccionado"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Ver más opciones"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Añadir un nuevo hito"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Quitar el hito seleccionado"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_my_profile.xml b/indra/newview/skins/default/xui/es/panel_my_profile.xml index 5a6fd8b14485d6ca3aa0312f506157bd1325e72e..14c94acf5b4db093fc1122b627e0a9ebe3df6e11 100644 --- a/indra/newview/skins/default/xui/es/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_my_profile.xml @@ -27,9 +27,8 @@ </panel> </scroll_container> </layout_panel> - <layout_panel name="profile_me_buttons_panel"> - <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modificar tu información personal"/> - <button label="Modificar la apariencia" name="edit_appearance_btn" tool_tip="Crear o modificar tu apariencia: tu fÃsico, ropas, etc."/> - </layout_panel> </layout_stack> + <panel name="profile_me_buttons_panel"> + <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modificar tu información personal"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml b/indra/newview/skins/default/xui/es/panel_nearby_chat.xml deleted file mode 100644 index 986c109c41ced822c7c336b4562c02cb43e1bb76..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - CHAT - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/es/panel_notes.xml b/indra/newview/skins/default/xui/es/panel_notes.xml index 8de2afa767f42ede857ac92c6590a51bd7159550..00d4caf4685cdb16acfdf0eed6d4d4294c8dff1e 100644 --- a/indra/newview/skins/default/xui/es/panel_notes.xml +++ b/indra/newview/skins/default/xui/es/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notas y Privacidad" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Mis notas privadas:"/> @@ -11,13 +11,25 @@ <check_box label="Edite, borre o coja mis objetos" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> - <button label="MI" name="im" tool_tip="Abrir un mensaje instantáneo"/> - <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/> - <button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_online_status.xml b/indra/newview/skins/default/xui/es/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml index f697539502b4b6bbb3e5eb3b0e14a487613ae5e2..9e669995aa9bb747d51bed13330dcdb58c6e149b 100644 --- a/indra/newview/skins/default/xui/es/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/es/panel_outfit_edit.xml @@ -45,7 +45,13 @@ <button name="shop_btn_2" tool_tip="Visita el Mercado de SL. Asimismo, puedes seleccionar algo que lleves puesto y, a continuación, hacer clic aquà para ver más Ãtems relacionados"/> </panel> <panel name="save_revert_button_bar"> - <button label="Guardar" name="save_btn"/> - <button label="Deshacer los cambios" name="revert_btn" tool_tip="Volver a la última versión guardada"/> + <layout_stack name="button_bar_ls"> + <layout_panel name="save_btn_lp"> + <button label="Guardar" name="save_btn"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Deshacer los cambios" name="revert_btn" tool_tip="Volver a la última versión guardada"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml index 582b0d1955a2c4ff2894c01b75066baf39a2afe2..1107e72b549aa7c95f2767d9d104246aafd95e1c 100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_inventory.xml @@ -11,7 +11,13 @@ <panel label="PUESTO" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> - <button label="Guardar como" name="save_btn"/> - <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_btn_lp"> + <button label="Guardar como" name="save_btn"/> + </layout_panel> + <layout_panel name="wear_btn_lp"> + <button label="Ponerme" name="wear_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml index 13f584ff28e5d2ca33d46403407879eefe9cb7b1..177373559882711f337afcac69ab267b512f021e 100644 --- a/indra/newview/skins/default/xui/es/panel_people.xml +++ b/indra/newview/skins/default/xui/es/panel_people.xml @@ -32,9 +32,17 @@ <accordion_tab name="tab_all" title="Todos"/> </accordion> <panel label="bottom_panel" name="bottom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opciones"/> - <button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/> - <button name="del_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="friends_viewsort_btn" tool_tip="Ver más opciones"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Ofrecer amistad a un Residente"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Quitar a la persona seleccionada de tu lista de amigos"/> + </layout_panel> + </layout_stack> </panel> </panel> <panel label="MIS GRUPOS" name="groups_panel"> @@ -52,13 +60,33 @@ </panel> </tab_container> <panel name="button_bar"> - <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/> - <button label="MI" name="im_btn" tool_tip="Abrir un mensaje instantáneo"/> - <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/> - <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> - <button label="Teleportar" name="teleport_btn" tool_tip="Ofrecer teleporte"/> - <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/> - <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/> - <button label="Multiconferencia" name="group_call_btn" tool_tip="Llamar a este grupo"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Perfil del grupo" name="group_info_btn" tool_tip="Ver la información del grupo"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Chat de grupo" name="chat_btn" tool_tip="Abrir el chat"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Llamar al grupo" name="group_call_btn" tool_tip="Llama a este grupo"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_pick_info.xml b/indra/newview/skins/default/xui/es/panel_pick_info.xml index c55addbc93c44a5d19c45f56d17a89483cbc23a5..a1259cf483a59229e557696d67f97dc8ca5d73da 100644 --- a/indra/newview/skins/default/xui/es/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/es/panel_pick_info.xml @@ -3,14 +3,22 @@ <text name="title" value="Información del destacado"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <text name="pick_name" value="[nombre]"/> - <text name="pick_location" value="[cargando...]"/> - <text name="pick_desc" value="[descripción]"/> + <text_editor name="pick_name" value="[nombre]"/> + <text_editor name="pick_location" value="[cargando...]"/> + <text_editor name="pick_desc" value="[descripción]"/> </panel> </scroll_container> <panel name="buttons"> - <button label="Teleporte" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Editar" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleporte" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_picks.xml b/indra/newview/skins/default/xui/es/panel_picks.xml index abedc6c5513f7b13734a0979bdd3c323ca91093c..904cdd12f1544df68c665ed639e46b030c43d01e 100644 --- a/indra/newview/skins/default/xui/es/panel_picks.xml +++ b/indra/newview/skins/default/xui/es/panel_picks.xml @@ -2,19 +2,28 @@ <panel label="Destacados" name="panel_picks"> <string name="no_picks" value="No hay destacados"/> <string name="no_classifieds" value="No hay clasificados"/> - <text name="empty_picks_panel_text"> - No hay ni destacados ni clasificados - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Destacados"/> <accordion_tab name="tab_classifieds" title="Clasificados"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Crear un nuevo destacado o clasificado de la posición actual"/> + <layout_stack name="edit_panel_ls"> + <layout_panel name="gear_menu_btn"> + <button name="new_btn" tool_tip="Crear un nuevo destacado o clasificado de la posición actual"/> + </layout_panel> + </layout_stack> </panel> <panel name="buttons_cucks"> - <button label="Información" name="info_btn" tool_tip="Mostrar la información del destacado"/> - <button label="Teleportarse" name="teleport_btn" tool_tip="Teleportar a esta zona"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> + <layout_stack name="buttons_cucks_ls"> + <layout_panel name="info_btn_lp"> + <button label="Información" name="info_btn" tool_tip="Mostrar la información del destacado"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a esta zona"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml index d186a04f4b398f2ff2afdc4bfd9c65331f06b2a3..2e349c7fe256b90fbfdd66f2ddc5ebd27d06bccc 100644 --- a/indra/newview/skins/default/xui/es/panel_places.xml +++ b/indra/newview/skins/default/xui/es/panel_places.xml @@ -4,13 +4,45 @@ <string name="teleport_history_tab_title" value="HISTORIAL DE TELEPORTES"/> <filter_editor label="Filtrar mis lugares" name="Filter"/> <panel name="button_panel"> - <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> - <button label="Mapa" name="map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> - <button label="Editar" name="edit_btn" tool_tip="Editar la información del hito"/> - <button label="â–¼" name="overflow_btn" tool_tip="Ver más opciones"/> - <button label="Guardar" name="save_btn"/> - <button label="Cancelar" name="cancel_btn"/> - <button label="Cerrar" name="close_btn"/> - <button label="Perfil" name="profile_btn" tool_tip="Mostrar el perfil del lugar"/> + <layout_stack name="bottom_bar_ls0"> + <layout_panel name="lp1"> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="teleport_btn_lp"> + <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Mapa" name="map_btn" tool_tip="Mostrar esta zona en el mapa del mundo"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="lp2"> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn" tool_tip="Editar la información del hito"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Ver más opciones"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="profile_btn_lp"> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar el perfil del lugar"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_close_ls3"> + <layout_panel name="close_btn_lp"> + <button label="Cerrar" name="close_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls2"> + <layout_panel name="save_btn_lp"> + <button label="Guardar" name="save_btn"/> + </layout_panel> + <layout_panel name="cancel_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </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 22f967afe62ba623914b4057f32c58ea072540b3..05aea82d824860f67bd7ef4c5774e8cf16383a52 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml @@ -56,27 +56,27 @@ <radio_item label="Varias ventanas" name="radio" value="0"/> <radio_item label="Pestañas" name="radio2" value="1"/> </radio_group> - <check_box label="Traducir Chat" name="translate_chat_checkbox" /> + <check_box label="Utiliza la herramienta de traducción automática mientras utilizas el chat (mediante Google)" name="translate_chat_checkbox"/> <text name="translate_language_text"> - Idioma de chat: + Traducir el chat al: </text> <combo_box name="translate_language_combobox"> - <combo_box.item name="System Default Language" label="Predeterminado del sistema" /> - <combo_box.item name="English" label="English (Inglés)" /> - <combo_box.item name="Danish" label="Dansk (Danés)" /> - <combo_box.item name="German" label="Deutsch (Alemán)" /> - <combo_box.item name="Spanish" label="Español" /> - <combo_box.item name="French" label="Français (Francés)" /> - <combo_box.item name="Italian" label="Italiano" /> - <combo_box.item name="Hungarian" label="Magyar (Húngaro)" /> - <combo_box.item name="Dutch" label="Nederlands (Neerlandés)" /> - <combo_box.item name="Polish" label="Polski (Polaco)" /> - <combo_box.item name="Portugese" label="Português (Portugués)" /> - <combo_box.item name="Russian" label="РуÑÑкий (Ruso)" /> - <combo_box.item name="Turkish" label="Türkçe (Turco)" /> - <combo_box.item name="Ukrainian" label="УкраїнÑька (Ucraniano)" /> - <combo_box.item name="Chinese" label="ä¸æ–‡ (简体) (Chino)" /> - <combo_box.item name="Japanese" label="日本語 (Japonés)" /> - <combo_box.item name="Korean" label="í•œêµì–´ (Coreano)" /> + <combo_box.item label="Predeterminado del sistema" name="System Default Language"/> + <combo_box.item label="English (inglés)" name="English"/> + <combo_box.item label="Dansk (danés)" name="Danish"/> + <combo_box.item label="Deutsch (alemán)" name="German"/> + <combo_box.item label="Español" name="Spanish"/> + <combo_box.item label="Français (francés)" name="French"/> + <combo_box.item label="Italiano (italiano)" name="Italian"/> + <combo_box.item label="Magyar (húngaro)" name="Hungarian"/> + <combo_box.item label="Nederlands (neerlandés)" name="Dutch"/> + <combo_box.item label="Polski (polaco)" name="Polish"/> + <combo_box.item label="Português (portugués)" name="Portugese"/> + <combo_box.item label="РуÑÑкий (ruso)" name="Russian"/> + <combo_box.item label="Türkçe (turco)" name="Turkish"/> + <combo_box.item label="УкраїнÑька (ucraniano)" name="Ukrainian"/> + <combo_box.item label="ä¸æ–‡ (简体) (chino)" name="Chinese"/> + <combo_box.item label="日本語 (japonés)" name="Japanese"/> + <combo_box.item label="í•œêµì–´ (coreano)" name="Korean"/> </combo_box> </panel> 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 20109cf2c514ba88b5ab0699439b2fc89bddee1b..c609cb74ba6fe7f4a721f085d373febe2814c6b7 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml @@ -13,7 +13,7 @@ <combo_box.item label="Italiano - Beta" name="Italian"/> <combo_box.item label="Nederlands (Neerlandés) - Beta" name="Dutch"/> <combo_box.item label="Polski (Polaco) - Beta" name="Polish"/> - <combo_box.item label="Português (Portugués) - Beta" name="Portugese"/> + <combo_box.item label="Português (portugués) - Beta" name="Portugese"/> <combo_box.item label="日本語 (Japonés) - Beta" name="(Japanese)"/> </combo_box> <text name="language_textbox2"> 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 feebf197c42304e5e9fd5ccf82809dfedfcd58a1..36b64930041748be836a56a4366b5e5568a43e68 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_graphics1.xml @@ -28,22 +28,16 @@ <check_box initial_value="true" label="Efecto de relieve y brillo" name="BumpShiny"/> <check_box initial_value="true" label="Shaders básicos" name="BasicShaders" tool_tip="Desactivando esta opción puede prevenir fallos en algunos controladores de la tarjeta gráfica."/> <check_box initial_value="true" label="Shaders de la atmósfera" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Reflejos en el agua" name="Reflections"/> - <text name="ReflectionDetailText"> - Objetos reflejados: + <text name="reflection_label"> + Reflejos en el agua: </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item label="Terreno y árboles" name="0"/> - <radio_item label="Todos los objetos estáticos" name="1"/> - <radio_item label="Todos los avatares y objetos" name="2"/> - <radio_item label="Todo" name="3"/> - </radio_group> - <text name="AvatarRenderingText"> - Renderización del avatar: - </text> - <check_box initial_value="true" label="Avatares simulados" name="AvatarImpostors"/> - <check_box initial_value="true" label="Renderizado por hardware" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="Ropas del avatar" name="AvatarCloth"/> + <combo_box initial_value="true" label="Reflejos en el agua" name="Reflections"> + <combo_box.item label="MÃnimo" name="0"/> + <combo_box.item label="Terreno y árboles" name="1"/> + <combo_box.item label="Todos los objetos estáticos" name="2"/> + <combo_box.item label="Todos los avatares y objetos" name="3"/> + <combo_box.item label="Todo" name="4"/> + </combo_box> <slider label="Distancia de dibujo:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -81,13 +75,12 @@ <text name="SkyMeshDetailText"> Bajo </text> - <text name="LightingDetailText"> - Detalles de iluminación: + <text name="AvatarRenderingText"> + Renderización del avatar: </text> - <radio_group name="LightingDetailRadio"> - <radio_item label="Sólo el Sol y la Luna" name="SunMoon" value="0"/> - <radio_item label="Puntos de luz cercanos" name="LocalLights" value="1"/> - </radio_group> + <check_box initial_value="true" label="Avatares simulados" name="AvatarImpostors"/> + <check_box initial_value="true" label="Renderizado por hardware" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Ropas del avatar" name="AvatarCloth"/> <text name="TerrainDetailText"> Detalle del terreno: </text> @@ -95,6 +88,7 @@ <radio_item label="Bajo" name="0"/> <radio_item label="Alto" name="2"/> </radio_group> + --> </panel> <button label="Aplicar" label_selected="Aplicar" name="Apply"/> <button label="Por defecto" name="Defaults"/> diff --git a/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml index 174922e28e224c1b01a34b636614fbd3e98adbb6..90b9e475e7b4e5ec11785319274d3ac86763e928 100644 --- a/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/es/panel_prim_media_controls.xml @@ -13,9 +13,9 @@ 50 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Los media se están cargando"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml index d725bfe61898428349f4664679e1c8615f590a54..5cfe83cd612f3af446d044352496c26fe1c309db 100644 --- a/indra/newview/skins/default/xui/es/panel_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_profile.xml @@ -36,17 +36,29 @@ </panel> </scroll_container> </layout_panel> + </layout_stack> + <layout_stack name="layout_verb_buttons"> <layout_panel name="profile_buttons_panel"> - <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> - <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/> - <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Mostrar al Residente en el mapa"/> - <button label="Teleportar" name="teleport" tool_tip="Ofrecer teleporte"/> - <button label="â–¼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Añadir como amigo" name="add_friend" tool_tip="Ofrecer amistad a este Residente"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="MI" name="im" tool_tip="Abrir una sesión de mensajes instantáneos"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Llamar" name="call" tool_tip="Llamar a este Residente"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleporte" name="teleport" tool_tip="Ofrecer teleporte"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Pagar dinero al Residente o compartir algo del inventario con él"/> + </layout_panel> + </layout_stack> </layout_panel> <layout_panel name="profile_me_buttons_panel"> <button label="Editar el perfil" name="edit_profile_btn" tool_tip="Modificar tu información personal"/> - <button label="Modificar la apariencia" name="edit_appearance_btn" tool_tip="Crear o modificar tu apariencia: tu fÃsico, ropas, etc."/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_general_layout.xml b/indra/newview/skins/default/xui/es/panel_region_general_layout.xml deleted file mode 100644 index 9ff88e2f79c7467e563e4cb9dead31e22c01dd5f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/es/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Región" name="General"> - <text name="region_text_lbl"> - Región: - </text> - <text name="region_text"> - desconocida - </text> - <text name="version_channel_text_lbl"> - Versión: - </text> - <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"/> - <check_box label="Prohibir volar" name="block_fly_check"/> - <check_box label="Permitir el daño" name="allow_damage_check"/> - <check_box label="Impedir los 'empujones'" name="restrict_pushobject"/> - <check_box label="Permitir la reventa del terreno" name="allow_land_resell_check"/> - <check_box label="Permitir unir/dividir el terreno" name="allow_parcel_changes_check"/> - <check_box label="Bloquear el mostrar el terreno en la búsqueda" name="block_parcel_search_check" tool_tip="Permite que la gente vea esta región y sus parcelas en los resultados de la búsqueda"/> - <spinner label="Nº máximo de avatares" name="agent_limit_spin"/> - <spinner label="Plus de objetos" name="object_bonus_spin"/> - <text label="Calificación" name="access_text"> - Calificación: - </text> - <combo_box label="Moderado" name="access_combo"> - <combo_box.item label="Adulto" name="Adult"/> - <combo_box.item label="Moderado" name="Mature"/> - <combo_box.item label="General" name="PG"/> - </combo_box> - <button label="Aplicar" name="apply_btn"/> - <button label="Teleportar a su Base a un Residente..." name="kick_btn"/> - <button label="Teleportar a sus Bases a todos los Residentes..." name="kick_all_btn"/> - <button label="Enviar un mensaje a toda la región..." name="im_btn"/> - <button label="Administrar el Punto de Teleporte..." name="manage_telehub_btn"/> -</panel> diff --git a/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml index 3633b0ccaa1965061f3d34ff2dd3b5edddbbf6a7..775e343dc9903443a6b387f9ef68ba806966655a 100644 --- a/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/es/panel_side_tray_tab_caption.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="Panel lateral"/> + <button name="undock" tool_tip="Soltar"/> + <button name="dock" tool_tip="Fijar"/> <button name="show_help" tool_tip="Ver ayuda"/> </panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml index 2c22a7ba460c13990d19c83cc656d5ba750aa092..b233fdd7348665f8276fdaea282655683a63db45 100644 --- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml @@ -2,12 +2,20 @@ <panel label="Cosas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Perfil" name="info_btn" tool_tip="Mostrar el perfil del objeto"/> - <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> - <button label="Comprar" name="shop_btn" tool_tip="Abrir la página web del mercado"/> - <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> - <button label="Play" name="play_btn"/> - <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="info_btn_lp"> + <button label="Perfil" name="info_btn" tool_tip="Mostrar el perfil del objeto"/> + </layout_panel> + <layout_panel name="share_btn_lp"> + <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> + </layout_panel> + <layout_panel name="shop_btn_lp"> + <button label="Comprar" name="shop_btn" tool_tip="Abrir la página web del mercado"/> + <button label="Ponerme" name="wear_btn" tool_tip="Ponerme el vestuario seleccionado"/> + <button label="Play" name="play_btn"/> + <button label="Teleporte" name="teleport_btn" tool_tip="Teleportar a la zona elegida"/> + </layout_panel> + </layout_stack> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml index 0cea46afbade117bd13aa76a2dabfd346c1d8ab7..ef7c6781be4694e5d0fae125af28984bc134fad7 100644 --- a/indra/newview/skins/default/xui/es/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_item_info.xml @@ -23,54 +23,53 @@ </panel.string> <text name="title" value="Perfil del elemento"/> <text name="origin" value="(Inventario)"/> - <panel label="" name="item_profile"> - <text name="LabelItemNameTitle"> - Nombre: - </text> - <text name="LabelItemDescTitle"> - Descripción: - </text> - <text name="LabelCreatorTitle"> - Creador: - </text> - <button label="Perfil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propietario: - </text> - <button label="Perfil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Obtenido: - </text> - <text name="LabelAcquiredDate"/> - <panel name="perms_inv"> - <text name="perm_modify"> - Tú puedes: + <scroll_container name="item_profile_scroll"> + <panel label="" name="item_profile"> + <text name="LabelItemNameTitle"> + Nombre: </text> - <check_box label="Modificar" name="CheckOwnerModify"/> - <check_box label="Copiar" name="CheckOwnerCopy"/> - <check_box label="Transferir" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Cualquiera: + <text name="LabelItemDescTitle"> + Descripción: </text> - <check_box label="Copiar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: + <text name="LabelCreatorTitle"> + Creador: </text> - <check_box label="Compartir" name="CheckShareWithGroup" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación de este objeto. Debes transferirlo para activar las restricciones según los roles."/> - <text name="NextOwnerLabel"> - Próximo propietario: + <text name="LabelOwnerTitle"> + Propietario: </text> - <check_box label="Modificar" name="CheckNextOwnerModify"/> - <check_box label="Copiar" name="CheckNextOwnerCopy"/> - <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + <text name="LabelAcquiredTitle"> + Obtenido: + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Tú puedes: + </text> + <check_box label="Modificar" name="CheckOwnerModify"/> + <check_box label="Copiar" name="CheckOwnerCopy"/> + <check_box label="Transferir" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Cualquiera: + </text> + <check_box label="Copiar" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: + </text> + <check_box label="Compartir" name="CheckShareWithGroup" tool_tip="Permite que todos los miembros del grupo compartan tus permisos de modificación de este objeto. Debes transferirlo para activar las restricciones según los roles."/> + <text name="NextOwnerLabel"> + Próximo propietario: + </text> + <check_box label="Modificar" name="CheckNextOwnerModify"/> + <check_box label="Copiar" name="CheckNextOwnerCopy"/> + <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="El próximo propietario puede dar o revender este objeto"/> + </panel> + <check_box label="En venta" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Precio: L$" name="Edit Cost"/> </panel> - <check_box label="En venta" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copiar" name="Copy"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Precio: L$" name="Edit Cost"/> - </panel> + </scroll_container> <panel name="button_panel"> <button label="Cancelar" name="cancel_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index a6404bf14c9bc98692e48f7bdcb795f000987f5c..ac12b700eec51b31faceda8eabb1585f0df2172e 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1267,6 +1267,9 @@ <string name="Right Pec"> Pecho derecho </string> + <string name="Invalid Attachment"> + Punto de colocación no válido + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de edad </string> @@ -1644,9 +1647,6 @@ <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD: abajo der. </string> - <string name="Bad attachment point"> - Punto de colocación no válido - </string> <string name="CursorPos"> LÃnea [LINE], Columna [COLUMN] </string> @@ -1662,12 +1662,6 @@ <string name="BusyModeResponseDefault"> El Residente al que has enviado un mensaje ha solicitado que no se le moleste porque está en modo ocupado. Podrá ver tu mensaje más adelante, ya que éste aparecerá en su panel de MI. </string> - <string name="NoOutfits"> - TodavÃa no tienes vestuario. Intenta con [secondlife:///app/search/all/ Buscar] - </string> - <string name="NoOutfitsTabsMatched"> - ¿No encuentras lo que buscas? Intenta con [secondlife:///app/search/all/[SEARCH_TERM] Buscar]. - </string> <string name="MuteByName"> (Por el nombre) </string> @@ -1822,6 +1816,12 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh <string name="accel-win-shift"> Mayús+ </string> + <string name="Esc"> + Esc + </string> + <string name="Home"> + Base + </string> <string name="FileSaved"> Archivo guardado </string> @@ -3438,6 +3438,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="IM_moderator_label"> (Moderador) </string> + <string name="Saved_message"> + (Guardado [LONG_TIMESTAMP]) + </string> <string name="answered_call"> Han respondido a tu llamada </string> @@ -3459,6 +3462,12 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="hang_up-im"> Se colgó la llamada de voz </string> + <string name="conference-title-incoming"> + Conferencia con [AGENT_NAME] + </string> + <string name="no_session_message"> + (La sesión de MI no existe) + </string> <string name="only_user_message"> Usted es el único usuario en esta sesión. </string> @@ -3843,4 +3852,13 @@ Denuncia de infracción <string name="Chat"> Chat </string> + <string name="DeleteItems"> + ¿Deseas eliminar los elementos seleccionados? + </string> + <string name="DeleteItem"> + ¿Deseas eliminar el elemento seleccionado? + </string> + <string name="EmptyOutfitText"> + No hay elementos en este vestuario + </string> </strings> diff --git a/indra/newview/skins/default/xui/fr/floater_about.xml b/indra/newview/skins/default/xui/fr/floater_about.xml index a1cbeecfb9167be088730ae67c81e2690cd3a70f..f963a40cd31f48ef768d8ec964eb48aff55a0705 100644 --- a/indra/newview/skins/default/xui/fr/floater_about.xml +++ b/indra/newview/skins/default/xui/fr/floater_about.xml @@ -45,7 +45,7 @@ Version serveur vocal : [VOICE_VERSION] <text_editor name="credits_editor"> Second Life existe grâce aux efforts de Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain et bien d'autres. -Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu'à présent) : Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan et bien d'autres. +Tous nos remerciements aux résidents suivants pour avoir testé cette version (la meilleure qui soit jusqu'à présent) : Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan et bien d'autres. diff --git a/indra/newview/skins/default/xui/fr/floater_customize.xml b/indra/newview/skins/default/xui/fr/floater_customize.xml deleted file mode 100644 index ff407b25c1657e0e62bb952892540104b05c04d6..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_customize.xml +++ /dev/null @@ -1,530 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="APPARENCE"> - <tab_container name="customize tab container" tab_min_width="150"> - <text label="Parties du corps" name="body_parts_placeholder"> - Parties du corps - </text> - <panel label="Silhouette" left="154" name="Shape" width="389"> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - <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"/> - <button label="Oreilles" label_selected="Oreilles" name="Ears"/> - <button label="Nez" label_selected="Nez" name="Nose"/> - <button label="Bouche" label_selected="Bouche" name="Mouth"/> - <button label="Menton" label_selected="Menton" name="Chin"/> - <button label="Torse" label_selected="Torse" name="Torso"/> - <button label="Jambes" label_selected="Jambes" name="Legs"/> - <radio_group name="sex radio"> - <radio_item label="Femme" name="radio" value="0"/> - <radio_item label="Homme" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portée - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de silhouette, faites-en glisser une de votre inventaire à votre avatar. Vous pouvez aussi en créer une nouvelle et la porter. - </text> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - </panel> - <panel label="Peau" name="Skin"> - <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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portée - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de peau, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. - </text> - <text name="no modify instructions"> - 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" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Cheveux" name="Hair"> - <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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portés - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de cheveux, faites-en glisser à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. - </text> - <text name="no modify instructions"> - 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" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Yeux" name="Eyes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portés - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer d'yeux, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer de nouveaux et les porter. - </text> - <text name="no modify instructions"> - 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" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <text label="Habits" name="clothes_placeholder"> - Habits - </text> - <panel label="Chemise" name="Shirt"> - <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Créer une chemise" label_selected="Créer une chemise" name="Create New"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portée - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de chemise, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. - </text> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Créer un pantalon" label_selected="Créer un pantalon" name="Create New"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non porté - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de pantalon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. - </text> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <text name="Item Action Label" right="92"> - Pantalon : - </text> - </panel> - <panel label="Chaussures" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portées - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de chaussures, faites-en glisser une paire de votre inventaire à votre avatar. Vous pouvez aussi en créer des nouvelles et les porter. - </text> - <button label="Créer des chaussures" label_selected="Créer des chaussures" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Chaussettes" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portées - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de chaussettes, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer des nouvelles et les porter. - </text> - <button label="Créer des chaussettes" label_selected="Créer des chaussettes" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Veste" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portée - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de veste, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. - </text> - <button label="Créer une veste" label_selected="Créer une veste" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="81"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Gants" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portés - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de gants, faites-en glisser une paire à partir de votre inventaire. Vous pouvez aussi en créer de nouveaux et les porter. - </text> - <button label="Créer des gants" label_selected="Créer des gants" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Débardeur" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non porté - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de débardeur, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. - </text> - <button label="Créer un débardeur" label_selected="Créer un débardeur" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <text name="Item Action Label"> - Débardeur : - </text> - <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Caleçon" name="Underpants"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non porté - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de caleçon, faites-en glisser un à partir de votre inventaire. Vous pouvez aussi en créer un nouveau et le porter. - </text> - <button label="Créer un caleçon" label_selected="Créer un caleçon" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <text name="Item Action Label"> - Caleçon : - </text> - <texture_picker label="Tissu" name="Fabric" tool_tip="Cliquez pour sélectionner une image" width="74"/> - <color_swatch label="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Jupe" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non portée - </text> - <text name="path"> - Emplacement : [PATH] - </text> - <text name="not worn instructions"> - Pour changer de jupe, faites-en glisser une à partir de votre inventaire. Vous pouvez aussi en créer une nouvelle et la porter. - </text> - <button label="Créer une jupe" label_selected="Créer une jupe" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas la permission de modifier cet objet. - </text> - <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="Coul./Teinte" name="Color/Tint" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs" width="74"/> - <button label="Enlever" label_selected="Enlever" left="12" name="Take Off" width="82"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Tatouage" name="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non porté - </text> - <text name="path"> - Dans [PATH] - </text> - <text name="not worn instructions"> - Pour changer de tatouage, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. - </text> - <button label="Créer un nouveau tatouage" label_selected="Créer un nouveau tatouage" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas le droit de modifier cet objet. - </text> - <text name="Item Action Label"> - Tatouage : - </text> - <texture_picker label="Tatouage tête" name="Head Tattoo" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Tatouage haut" name="Upper Tattoo" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Tatouage bas" name="Lower Tattoo" tool_tip="Cliquez pour sélectionner une image"/> - <button label="Enlever" label_selected="Enlever" name="Take Off"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - <panel label="Alpha" name="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: impossible de modifier - </text> - <text name="title_loading"> - [DESC]: en cours de chargement... - </text> - <text name="title_not_worn"> - [DESC]: non porté - </text> - <text name="path"> - Dans [PATH] - </text> - <text name="not worn instructions"> - Pour changer de masque alpha, faites-en glisser un de votre inventaire à votre avatar. Vous pouvez aussi en créer un nouveau et le porter. - </text> - <button label="Créer un nouvel alpha" label_selected="Créer un nouvel alpha" name="Create New"/> - <text name="no modify instructions"> - Vous n'avez pas le droit de modifier cet objet. - </text> - <text name="Item Action Label"> - Alpha : - </text> - <texture_picker label="Alpha bas" name="Lower Alpha" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Alpha haut" name="Upper Alpha" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Alpha tête" name="Head Alpha" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Alpha yeux" name="Eye Alpha" tool_tip="Cliquez pour sélectionner une image"/> - <texture_picker label="Alpha cheveux" name="Hair Alpha" tool_tip="Cliquez pour sélectionner une image"/> - <button label="Enlever" label_selected="Enlever" name="Take Off"/> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Enregistrer sous..." label_selected="Enregistrer sous..." name="Save As"/> - <button label="Rétablir" label_selected="Rétablir" name="Revert"/> - </panel> - </tab_container> - <scroll_container left="251" name="panel_container"/> - <button label="Infos scripts" label_selected="Infos scripts" name="script_info" tool_tip="Afficher les scripts attachés à votre avatar"/> - <button label="Créer tenue" label_selected="Créer une tenue..." name="make_outfit_btn"/> - <button label="Annuler" label_selected="Annuler" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_device_settings.xml b/indra/newview/skins/default/xui/fr/floater_device_settings.xml deleted file mode 100644 index f5994cb604b2520d4d3cf206bd8978482a4f0340..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="PARAMÈTRES DU MATÉRIEL UTILISÉ POUR LE CHAT VOCAL"/> diff --git a/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml b/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml deleted file mode 100644 index a1c6a19e8c5a69168765dde44049bee4b4759d81..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_first_time_tip.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="set_name_in_the_cladd"> - <check_box label="Désactiver les astuces" name="DontShowFirstTimeTip_checkbox"/> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_im.xml b/indra/newview/skins/default/xui/fr/floater_im.xml deleted file mode 100644 index 15b01dbf12effc0357e5fbf9a1bfe05f29a1d431..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Message instantané"> - <text name="only_user_message"> - Vous êtes le seul résident participant à cette session. - </text> - <text name="offline_message"> - [FIRST] [LAST] est déconnecté(e). - </text> - <string name="invite_message"> - Pour accepter ce chat vocal/vous connecter, cliquez sur le bouton [BUTTON NAME]. - </string> - <string name="muted_message"> - Vous ignorez ce résident. Si vous lui envoyez un message, il ne sera plus ignoré. - </string> - <string name="generic_request_error"> - Erreur lors de la requête, veuillez réessayer ultérieurement. - </string> - <string name="insufficient_perms_error"> - Vous n'avez pas les droits requis. - </string> - <string name="session_does_not_exist_error"> - La session a expiré - </string> - <string name="no_ability_error"> - Vous n'avez pas ce pouvoir. - </string> - <string name="not_a_mod_error"> - Vous n'êtes pas modérateur de session. - </string> - <string name="muted_error"> - Un modérateur de groupe a désactivé votre chat écrit. - </string> - <string name="add_session_event"> - Impossible d'ajouter des résidents à la session de chat avec [RECIPIENT]. - </string> - <string name="message_session_event"> - Impossible d'envoyer votre message à la session de chat avec [RECIPIENT]. - </string> - <string name="removed_from_group"> - Vous avez été supprimé du groupe. - </string> - <string name="close_on_no_ability"> - Vous ne pouvez plus participer à la session de chat. - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/fr/floater_im_session.xml b/indra/newview/skins/default/xui/fr/floater_im_session.xml index c3df4a869cb5d0ac3fb1ea9c9d870be05c529890..516eb41362f37960d6208c839fbd8ecb5846bc97 100644 --- a/indra/newview/skins/default/xui/fr/floater_im_session.xml +++ b/indra/newview/skins/default/xui/fr/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="Panneau de contrôle IM" name="panel_im_control_panel"/> <layout_panel> <line_editor label="À" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml index cd013f6c0e85baff309f2ea8c7a2e469851a226b..04afe89c7b4f3ceae0df5ca2552b6b23a9e17942 100644 --- a/indra/newview/skins/default/xui/fr/floater_map.xml +++ b/indra/newview/skins/default/xui/fr/floater_map.xml @@ -25,7 +25,7 @@ NO </floater.string> <floater.string name="ToolTipMsg"> - [AGENT][REGION](Double-cliquez pour ouvrir la carte) + [REGION](Carte : double-clic ; Panoramique : Maj + faire glisser) </floater.string> <floater.string name="mini_map_caption"> MINI-CARTE diff --git a/indra/newview/skins/default/xui/fr/floater_my_friends.xml b/indra/newview/skins/default/xui/fr/floater_my_friends.xml deleted file mode 100644 index db7c026e22388488f6daadbadd9142c90057b80f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="CONTACTS"> - <tab_container name="friends_and_groups"> - <panel label="Amis" name="friends_panel"/> - <panel label="Groupes" name="groups_panel"/> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml index a59253a74647edab485877646650db4d835fb0c1..9b1b21c434b859c0e1de43a0c210605a4dd81fb5 100644 --- a/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/fr/floater_nearby_chat.xml @@ -1,2 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="CHAT PRÈS DE MOI"/> +<floater name="nearby_chat" title="CHAT PRÈS DE MOI"> + <check_box label="Traduction du chat (fournie par Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml deleted file mode 100644 index d77dfbdf82514fcd437bdb985a77d486eced9214..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Enregistrer la tenue"> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Annuler" label_selected="Annuler" name="Cancel"/> - <text name="Save item as:"> - Enregistrer ce que je porte -comme une nouvelle tenue : - </text> - <line_editor name="name ed"> - [DESC] (nouv.) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml b/indra/newview/skins/default/xui/fr/floater_preview_classified.xml deleted file mode 100644 index 23f86d88b9a7c1e30e1ad75b2e89448c97207fbe..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFOS SUR LA PETITE ANNONCE"> - <floater.string name="Title"> - Petite annonce : [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_event.xml b/indra/newview/skins/default/xui/fr/floater_preview_event.xml deleted file mode 100644 index 7590c43af12451fdf3d808d6c64cbfbdc094960a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMATIONS SUR LES ÉVÉNEMENTS"> - <floater.string name="Title"> - Événement : [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml deleted file mode 100644 index 4a91992f6aed3365b815fe6ddefea2e8be56cc47..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="RACCOURCI DU GESTE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml deleted file mode 100644 index d866c328827b2de949af41834fa9782041f89d3a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="RACCOURCI DU GESTE"> - <text name="trigger_label"> - Chat : - </text> - <text name="key_label"> - Clavier : - </text> - <combo_box label="Aucun" name="modifier_combo" width="62"/> - <combo_box label="Aucun" name="key_combo" width="62"/> - <text name="replace_text" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé " bonjour " par " salut ", le chat " Je voulais te dire bonjour " devient " Je voulais te dire salut " et le geste correspondant s'affiche."> - Remplacer : - </text> - <line_editor name="replace_editor" tool_tip="Remplacez le ou les mots-clés par ces mots. Par exemple, si vous remplacez le mot-clé " bonjour " par " salut ", le chat " Je voulais te dire bonjour " devient " Je voulais te dire salut " et le geste correspondant s'affiche."/> -</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml deleted file mode 100644 index 4a91992f6aed3365b815fe6ddefea2e8be56cc47..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="RACCOURCI DU GESTE"/> diff --git a/indra/newview/skins/default/xui/fr/floater_statistics.xml b/indra/newview/skins/default/xui/fr/floater_statistics.xml deleted file mode 100644 index a2e3c199ab79e8d779ef5e740e659dc81ddd90be..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?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 b0c8636ea30b19ac92dec5f7395a7668e33b68b9..666aaa81478c1a8e115bb87029f0b10f0f21ce39 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -182,10 +182,10 @@ <text name="Group:"> Groupe : </text> - <button label="Définir..." label_selected="Définir..." name="button set group" tool_tip="Choisissez un groupe pour partager les droits de cet objet"/> <name_box initial_value="Chargement..." name="Group Name Proxy"/> - <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les droits au prochain propriétaire. Seul un officier peut céder les objets d'un groupe."/> + <button label="Définir..." label_selected="Définir..." name="button set group" tool_tip="Choisissez un groupe pour partager les droits de cet objet"/> <check_box label="Partager" 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."/> + <button label="Céder" label_selected="Céder" name="button deed" tool_tip="En cédant un objet, vous donnez aussi les droits au prochain propriétaire. Seul un officier peut céder les objets d'un groupe."/> <text name="label click action"> Cliquer pour : </text> @@ -437,7 +437,8 @@ <combo_box.item label="Ventouses" name="suction"/> <combo_box.item label="Tissage" name="weave"/> </combo_box> - <text name="tex scale"> + <check_box initial_value="false" label="Aligner les faces Plan" name="checkbox planar align" tool_tip="Aligner les textures sur toutes les faces sélectionnées avec la dernière face sélectionnée. Application de la texture Plan requise."/> + <text name="rpt"> Répétitions / Face </text> <spinner label="Horizontal (U)" name="TexScaleU"/> diff --git a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml index 5c26527ed6b947485cd767aaf5ea5fece4ec8a50..8397dc426350f11acf22dee2080d2c41e0928118 100644 --- a/indra/newview/skins/default/xui/fr/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/fr/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mon avatar :"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Quitter l'appel" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Quitter l'appel" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml deleted file mode 100644 index 5dda347fcfbddcab62c247300ed09ed401d2931f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container"> - <button label="Enregistrer" label_selected="Enregistrer" name="Save"/> - <button label="Annuler" label_selected="Annuler" name="Cancel"/> - <text name="Save item as:"> - Enregistrer l'objet dans mon inventaire comme : - </text> - <line_editor name="name ed"> - Nouveau [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..7e7993175e7d827541f17f989e417b0c10f6f253 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="Trier en commençant par le plus récent" name="sort_by_most_recent"/> + <menu_item_check label="Trier par nom" name="sort_by_name"/> + <menu_item_check label="Trier par type" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml index 4516b624b8f18d0352bcaeed6dcd3b01ce5e68da..78198fb5a8f6e2a8c2cec399b0aba8abcc50aebc 100644 --- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml @@ -3,6 +3,7 @@ <menu_item_call label="Toucher" name="Attachment Object Touch"/> <menu_item_call label="Modifier" name="Edit..."/> <menu_item_call label="Détacher" name="Detach"/> + <menu_item_call label="M'asseoir" name="Sit Down Here"/> <menu_item_call label="Me lever" name="Stand Up"/> <menu_item_call label="Changer de tenue" name="Change Outfit"/> <menu_item_call label="Modifier ma tenue" name="Edit Outfit"/> diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml index 3620dc72b05ec4b388bbe1d99c92b838698287e8..c7ee2e9f883428c773c5553e1b7bcb53e165297d 100644 --- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> + <menu_item_call label="M'asseoir" name="Sit Down Here"/> <menu_item_call label="Me lever" name="Stand Up"/> - <context_menu label="Enlever â–¶" name="Take Off >"> - <context_menu label="Habits â–¶" name="Clothes >"> + <context_menu label="Enlever" name="Take Off >"> + <context_menu label="Habits" name="Clothes >"> <menu_item_call label="Chemise" name="Shirt"/> <menu_item_call label="Pantalon" name="Pants"/> <menu_item_call label="Jupe" name="Skirt"/> @@ -16,8 +17,8 @@ <menu_item_call label="Alpha" name="Self Alpha"/> <menu_item_call label="Tous les habits" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Détacher â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Détacher" name="Object Detach"/> <menu_item_call label="Tout détacher" name="Detach All"/> </context_menu> <menu_item_call label="Changer de tenue" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml index e2b215cbb8bc46289927a03e5a08386f2c665ab7..074bb54cdc512824bf538283af811694d7e2f007 100644 --- a/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_inspect_object_gear.xml @@ -9,6 +9,7 @@ <menu_item_call label="Ouvrir" name="open"/> <menu_item_call label="Modifier" name="edit"/> <menu_item_call label="Porter" name="wear"/> + <menu_item_call label="Ajouter" name="add"/> <menu_item_call label="Signaler" name="report"/> <menu_item_call label="Ignorer" name="block"/> <menu_item_call label="Zoomer en avant" name="zoom_in"/> diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml index 5f570b5608cef031f89079cfc62c8f5d2d535655..3bc164788a6e193b8189ea20eada2aabafa93701 100644 --- a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> + <menu_item_call label="M'asseoir" name="sit_down_here"/> <menu_item_call label="Me lever" name="stand_up"/> <menu_item_call label="Changer de tenue" name="change_outfit"/> <menu_item_call label="Mon profil" name="my_profile"/> diff --git a/indra/newview/skins/default/xui/fr/menu_mini_map.xml b/indra/newview/skins/default/xui/fr/menu_mini_map.xml index 9dc40af5027e112dd8f64ffcfe0e0f2e417f76e2..7530f31d4ebed9e179f71879142807c122021a4a 100644 --- a/indra/newview/skins/default/xui/fr/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/fr/menu_mini_map.xml @@ -4,6 +4,7 @@ <menu_item_call label="Zoom moyen" name="Zoom Medium"/> <menu_item_call label="Zoom éloigné" name="Zoom Far"/> <menu_item_check label="Faire pivoter la carte" name="Rotate Map"/> + <menu_item_check label="Centrage auto" name="Auto Center"/> <menu_item_call label="Arrêter de suivre" name="Stop Tracking"/> <menu_item_call label="Carte du monde" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml index 257c44795f85ee5091d35ac72029b5f0fd1fbc7b..a50a9df4b10dd5b88847aaa2fbac7204b603e53c 100644 --- a/indra/newview/skins/default/xui/fr/menu_object.xml +++ b/indra/newview/skins/default/xui/fr/menu_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> <menu_item_call label="Toucher" name="Object Touch"> - <on_enable parameter="Toucher" name="EnableTouch"/> + <menu_item_call.on_enable name="EnableTouch" parameter="Toucher"/> </menu_item_call> <menu_item_call label="Modifier" name="Edit..."/> <menu_item_call label="Construire" name="Build"/> @@ -10,18 +10,18 @@ <menu_item_call label="Me lever" name="Object Stand Up"/> <menu_item_call label="Profil de l'objet" name="Object Inspect"/> <menu_item_call label="Zoomer en avant" name="Zoom In"/> - <context_menu label="Porter â–¶" name="Put On"> + <context_menu label="Porter" name="Put On"> <menu_item_call label="Porter" name="Wear"/> - <context_menu label="Attacher â–¶" name="Object Attach"/> - <context_menu label="Attacher les éléments HUD â–¶" name="Object Attach HUD"/> + <menu_item_call label="Ajouter" name="Add"/> + <context_menu label="Attacher" name="Object Attach"/> + <context_menu label="Attacher HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Supprimer â–¶" name="Remove"> + <context_menu label="Supprimer" name="Remove"> <menu_item_call label="Signaler une infraction" name="Report Abuse..."/> <menu_item_call label="Ignorer" name="Object Mute"/> <menu_item_call label="Retour" name="Return..."/> <menu_item_call label="Supprimer" name="Delete"/> </context_menu> - <menu_item_call label="Acheter" name="Pie Object Bye"/> <menu_item_call label="Prendre" name="Pie Object Take"/> <menu_item_call label="Prendre une copie" name="Take Copy"/> <menu_item_call label="Payer" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/fr/menu_participant_list.xml b/indra/newview/skins/default/xui/fr/menu_participant_list.xml index 63d3d39f9c513465156126ccef3ba4a1a6387e66..f91a30f6bb196bcc7acc8ac816af29c35dd8d302 100644 --- a/indra/newview/skins/default/xui/fr/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/fr/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="Afficher les icônes des résidents" name="View Icons"/> <menu_item_check label="Bloquer le chat vocal" name="Block/Unblock"/> <menu_item_check label="Ignorer le texte" name="MuteText"/> - <context_menu label="Options du modérateur >" name="Moderator Options"> + <context_menu label="Options du modérateur" name="Moderator Options"> <menu_item_check label="Autoriser les chats écrits" name="AllowTextChat"/> <menu_item_call label="Ignorer ce participant" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Ne plus ignorer ce participant" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml index 5adf8714cf2d2ec3382c5d130a5aa5fd23f17f2a..a6170a6c162ae199165b1d7375df4d81d58f04af 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_friends_view_sort.xml @@ -3,5 +3,6 @@ <menu_item_check label="Trier par nom" name="sort_name"/> <menu_item_check label="Trier par statut" name="sort_status"/> <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> + <menu_item_check label="Afficher les droits octroyés" name="view_permissions"/> <menu_item_call label="Afficher les résidents et les objets ignorés" name="show_blocked_list"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml index 18ae84a67b566801fdc11521b1a0572cd64879d8..8400ec0a14dcfe89812b4ecf7c0d4c6b92b39b8d 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_multiselect.xml @@ -6,4 +6,5 @@ <menu_item_call label="Appeler" name="Call"/> <menu_item_call label="Partager" name="Share"/> <menu_item_call label="Payer" name="Pay"/> + <menu_item_call label="Proposer une téléportation" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml index cd0e41e49646119ae9c5072d8697665a755f862d..5f51c61655671d44f5e0a3f9893fe2510a86c2e8 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -94,7 +94,6 @@ <menu_item_call label="Définir les scripts sur Pas d'exécution" name="Set Scripts to Not Running"/> </menu> <menu label="Options" name="Options"> - <menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/> <menu_item_check label="Afficher les droits avancés" name="DebugPermissions"/> <menu_item_check label="Sélectionner mes objets uniquement" name="Select Only My Objects"/> <menu_item_check label="Sélectionner les objets déplaçables uniquement" name="Select Only Movable Objects"/> @@ -121,7 +120,6 @@ <menu_item_call label="À propos de [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avancé" name="Advanced"> - <menu_item_check label="Afficher le menu Avancé" name="Show Advanced Menu"/> <menu_item_call label="Arrêter mon animation" name="Stop Animating My Avatar"/> <menu_item_call label="Refixer les textures" name="Rebake Texture"/> <menu_item_call label="Taille de l'interface par défaut" name="Set UI Size to Default"/> @@ -168,7 +166,6 @@ <menu_item_check label="Tester FRInfo" name="Test FRInfo"/> <menu_item_check label="Objets flexibles" name="Flexible Objects"/> </menu> - <menu_item_check label="Exécuter plusieurs threads" name="Run Multiple Threads"/> <menu_item_check label="Utiliser le thread de lecture de plug-in" name="Use Plugin Read Thread"/> <menu_item_call label="Effacer le cache du groupe" name="ClearGroupCache"/> <menu_item_check label="Effet de lissage de la souris" name="Mouse Smoothing"/> @@ -177,7 +174,6 @@ <menu_item_check label="Rechercher" name="Search"/> <menu_item_call label="Relâcher les touches" name="Release Keys"/> <menu_item_call label="Taille de l'interface par défaut" name="Set UI Size to Default"/> - <menu_item_check label="Afficher le menu Avancé - raccourci existant" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Toujours courir" name="Always Run"/> <menu_item_check label="Voler" name="Fly"/> <menu_item_call label="Fermer la fenêtre" name="Close Window"/> @@ -197,6 +193,7 @@ <menu_item_call label="Zoomer en avant" name="Zoom In"/> <menu_item_call label="Zoom par défaut" name="Zoom Default"/> <menu_item_call label="Zoomer en arrière" name="Zoom Out"/> + <menu_item_check label="Afficher le menu Avancé" name="Show Advanced Menu"/> </menu> <menu_item_call label="Afficher les paramètres de débogage" name="Debug Settings"/> <menu_item_check label="Afficher le menu Développeurs" name="Debug Mode"/> @@ -262,16 +259,19 @@ <menu_item_check label="Filaire" name="Wireframe"/> <menu_item_check label="Occlusion objet-objet" name="Object-Object Occlusion"/> <menu_item_check label="Objets de mémoire vidéo" name="Framebuffer Objects"/> - <menu_item_check label="Rendu différé" name="Deferred Rendering"/> - <menu_item_check label="Illumination globale" name="Global Illumination"/> + <menu_item_check label="Éclairage et ombres" name="Lighting and Shadows"/> + <menu_item_check label="Ombres du soleil/de la lune/des projecteurs" name="Shadows from Sun/Moon/Projectors"/> + <menu_item_check label="SSAO et lissage des ombres" name="SSAO and Shadow Smoothing"/> + <menu_item_check label="Illumination globale (expérimental)" name="Global Illumination"/> <menu_item_check label="Débogage GL" name="Debug GL"/> <menu_item_check label="Débogage pipeline" name="Debug Pipeline"/> - <menu_item_check label="Alpha rapide" name="Fast Alpha"/> + <menu_item_check label="Masques alpha automatiques (différés)" name="Automatic Alpha Masks (deferred)"/> + <menu_item_check label="Masques alpha automatiques (non différés)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Textures d'animation" name="Animation Textures"/> <menu_item_check label="Désactiver les textures" name="Disable Textures"/> <menu_item_check label="Textures pleine résolution" name="Rull Res Textures"/> <menu_item_check label="Audit Textures" name="Audit Textures"/> - <menu_item_check label="Atlas des textures" name="Texture Atlas"/> + <menu_item_check label="Atlas des textures (expérimental)" name="Texture Atlas"/> <menu_item_check label="Rendu des lumières jointes" name="Render Attached Lights"/> <menu_item_check label="Rendu des particules jointes" name="Render Attached Particles"/> <menu_item_check label="Objets en surbrillance avec le pointeur" name="Hover Glow Objects"/> @@ -308,7 +308,8 @@ <menu_item_call label="Imprimer les infos sur l'objet sélectionné" name="Print Selected Object Info"/> <menu_item_call label="Imprimer les infos sur l'avatar" name="Print Agent Info"/> <menu_item_call label="Statistiques de mémoire" name="Memory Stats"/> - <menu_item_check label="Double-ClickAuto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Pilote auto par double-click" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Téléportation par double-clic" name="DoubleClick Teleport"/> <menu_item_check label="Débogage SelectMgr" name="Debug SelectMgr"/> <menu_item_check label="Débogage clics" name="Debug Clicks"/> <menu_item_check label="Débogage des vues" name="Debug Views"/> diff --git a/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml index c477471a64730ee1b235b26770e915854ee82217..187cb4bcd2c996e45242d700cae939f068be0cec 100644 --- a/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearable_list_item.xml @@ -5,10 +5,10 @@ <menu_item_call label="Ajouter" name="wear_add"/> <menu_item_call label="Enlever / Détacher" name="take_off_or_detach"/> <menu_item_call label="Détacher" name="detach"/> - <context_menu label="Attacher à ▶" name="wearable_attach_to"/> - <context_menu label="Attacher au HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Attacher à " name="wearable_attach_to"/> + <context_menu label="Attacher au HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Enlever" name="take_off"/> <menu_item_call label="Modifier" name="edit"/> - <menu_item_call label="Profil de l'objet" name="object_profile"/> + <menu_item_call label="Profil de l'article" name="object_profile"/> <menu_item_call label="Afficher l'original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml index d5330c2417e37a97f2abcb5ba52cc3def2fb6d35..0ca9fe18791d1bfe68ad9cc02f073fa7ba626fb0 100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Gear Wearing"> <menu_item_call label="Modifier la tenue" name="edit"/> + <menu_item_call label="Enlever" name="takeoff"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml index b99f751fae7e16b1decd8011dbd0502270930846..4d884455069e959664bba9e49e8c489b60069115 100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_tab.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Wearing"> + <menu_item_call label="Enlever" name="take_off"/> + <menu_item_call label="Détacher" name="detach"/> <menu_item_call label="Modifier la tenue" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 259ac4cee638b39767afc9b8a900c8a43e98ac63..2a7d1d1a5d2fa1c34a665a92236ffaef12390373 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -1811,6 +1811,10 @@ Déplacer les objets de l'inventaire ? Êtes-vous certain de vouloir quitter ? <usetemplate ignoretext="Confirmer avant de quitter" name="okcancelignore" notext="Ne pas quitter" yestext="Quitter"/> </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Confirmer avant de supprimer des articles" name="okcancelignore" notext="Annuler" yestext="OK"/> + </notification> <notification name="HelpReportAbuseEmailLL"> Utilisez cet outil pour signaler des infractions aux [http://secondlife.com/corporate/tos.php Conditions d’utilisation] et aux [http://secondlife.com/corporate/cs.php Règles communautaires]. @@ -2744,9 +2748,13 @@ Veuillez vérifier la configuration de votre réseau et de votre pare-feu. ([EXISTENCE] secondes d'existence) Départ de l'avatar [NAME] entièrement chargé. </notification> - <notification name="AvatarRezSelfBakeNotification"> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ([EXISTENCE] secondes d'existence) +Texture figée de [RESOLUTION] chargée pour [BODYREGION] au bout de [TIME] secondes. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> ([EXISTENCE] secondes d'existence) -Vous avez [ACTION] une texture figée de [RESOLUTION] pour [BODYREGION] au bout de [TIME] secondes. +Texture figée de [RESOLUTION] mise à jour localement pour [BODYREGION] au bout de [TIME] secondes. </notification> <notification name="ConfirmLeaveCall"> Voulez-vous vraiment quitter cet appel ? diff --git a/indra/newview/skins/default/xui/fr/panel_audio_device.xml b/indra/newview/skins/default/xui/fr/panel_audio_device.xml deleted file mode 100644 index 2caa013f541258bc5a63a3db6a76ddd58cb1d802..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="device_settings"> - <text name="Audio Devices"> - Matériel audio - </text> - <text name="Input device (microphone):"> - Périphérique d'entrée (micro) : - </text> - <text name="Output device (speakers):" width="300"> - Périphérique de sortie (haut-parleurs) : - </text> - <text name="Input level:"> - Volume d'entrée - </text> - <text_editor name="voice_intro_text1"> - Pour que les autres résidents vous entendent plus ou moins fort, utilisez le curseur. Pour tester le volume, parlez dans le micro. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Réglez le volume avec ce curseur."/> - <text name="wait_text"> - Veuillez patienter - </text> - <string name="default_text"> - Défaut - </string> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml index 792fd70c7fdc81244e16ff8f760b6436f08b60cc..607665ddd80305a69d54f2b3a02c42932cdc91d7 100644 --- a/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/fr/panel_avatar_list_item.xml @@ -23,5 +23,9 @@ </string> <text name="avatar_name" value="Inconnu"/> <text name="last_interaction" value="0s"/> + <icon name="permission_edit_theirs_icon" tool_tip="Vous pouvez modifier les objets de cet(te) ami(e)."/> + <icon name="permission_edit_mine_icon" tool_tip="Cet(te) ami(e) peut modifier, supprimer ou prendre vos objets."/> + <icon name="permission_map_icon" tool_tip="Cet(te) ami(e) peut vous localiser sur la carte."/> + <icon name="permission_online_icon" tool_tip="Cet(te) ami(e) peut voir lorsque vous êtes en ligne."/> <button name="profile_btn" tool_tip="Voir le profil"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml index 328b97ee72a3b99fa3f1ff65c4a3c74bbb5c9666..c4537861e36aa1d8f9677c828000f0c1a7eb168e 100644 --- a/indra/newview/skins/default/xui/fr/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/fr/panel_bottomtray.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> <string name="SpeakBtnToolTip" value="Active/Désactive le micro"/> <string name="VoiceControlBtnToolTip" value="Affiche/Masque le panneau de contrôle de la voix"/> <layout_stack name="toolbar_stack"> @@ -12,28 +13,25 @@ <gesture_combo_list label="Geste" name="Gesture" tool_tip="Affiche/Masque les gestes"/> </layout_panel> <layout_panel name="movement_panel"> - <button label="Bouger" name="movement_btn" tool_tip="Affiche/Masque le contrôle des déplacements"/> + <bottomtray_button label="Bouger" name="movement_btn" tool_tip="Affiche/Masque le contrôle des déplacements"/> </layout_panel> <layout_panel name="cam_panel"> - <button label="Affichage" name="camera_btn" tool_tip="Affiche/Masque le contrôle de la caméra"/> + <bottomtray_button label="Affichage" name="camera_btn" tool_tip="Affiche/Masque le contrôle de la caméra"/> </layout_panel> <layout_panel name="snapshot_panel"> - <button label="" name="snapshots" tool_tip="Prendre une photo"/> - </layout_panel> - <layout_panel name="sidebar_btn_panel"> - <button label="Panneau latéral" name="sidebar_btn" tool_tip="Affiche/Masque le panneau latéral"/> + <bottomtray_button label="" name="snapshots" tool_tip="Prendre une photo"/> </layout_panel> <layout_panel name="build_btn_panel"> - <button label="Construire" name="build_btn" tool_tip="Affiche/Masque les outils pour la construction"/> + <bottomtray_button label="Construire" name="build_btn" tool_tip="Affiche/Masque les outils pour la construction"/> </layout_panel> <layout_panel name="search_btn_panel"> - <button label="Rechercher" name="search_btn" tool_tip="Affiche/Masque la recherche"/> + <bottomtray_button label="Rechercher" name="search_btn" tool_tip="Affiche/Masque la recherche"/> </layout_panel> <layout_panel name="world_map_btn_panel"> - <button label="Carte" name="world_map_btn" tool_tip="Affiche/Masque la carte du monde"/> + <bottomtray_button label="Carte" name="world_map_btn" tool_tip="Affiche/Masque la carte du monde"/> </layout_panel> <layout_panel name="mini_map_btn_panel"> - <button label="Mini-carte" name="mini_map_btn" tool_tip="Affiche/Masque la mini-carte"/> + <bottomtray_button label="Mini-carte" name="mini_map_btn" tool_tip="Affiche/Masque la mini-carte"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/default/xui/fr/panel_classified_info.xml b/indra/newview/skins/default/xui/fr/panel_classified_info.xml index e4aecfdfc089996d808ae648dee82ed32a183dd8..c4265be877882415061948ab1db3287b7a1d6b2f 100644 --- a/indra/newview/skins/default/xui/fr/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_classified_info.xml @@ -52,8 +52,16 @@ </panel> </scroll_container> <panel name="buttons"> - <button label="Téléporter" name="teleport_btn"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="Édition" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Téléportation" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Carte" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Modifier" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml index 2e2b848c93ab6fe61f1538b665734c0a6c4902b4..7b58f2e82584a53d9a4617fca214927b4d743f6d 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_classified.xml @@ -36,13 +36,19 @@ <icons_combo_box.item label="Contenu Modéré" name="mature_ci" value="Mature"/> <icons_combo_box.item label="Contenu Général" name="pg_ci" value="PG"/> </icons_combo_box> + <check_box label="Renouvellement auto toutes les semaines" name="auto_renew"/> <text name="price_for_listing_label" value="Coût de l'annonce :"/> <spinner label="L$" name="price_for_listing" tool_tip="Coût de l'annonce." value="50"/> - <check_box label="Renouvellement auto toutes les semaines" name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="[LABEL]" name="save_changes_btn"/> - <button label="Annuler" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="[LABEL]" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Annuler" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml index 5872b01fb0da419e98df6cbe35aadaf8a91176f4..2364d9bbb297cc5eb1b4e8a79a5d41f5080a0df6 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml @@ -25,7 +25,13 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Enregistrer" name="save_changes_btn"/> - <button label="Annuler" name="cancel_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Enregistrer" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="layout_panel1"> + <button label="Annuler" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml index 4be12054df8e11fdf2619af4e1e09f8020ee9849..9a6401536fc8fb83408988bc76d919a77cae0bef 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_profile.xml @@ -53,7 +53,13 @@ </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Enregistrer les changements" name="save_btn" width="166"/> - <button label="Annuler" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="Enregistrer les changements" name="save_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Annuler" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml index 624026efbbfbb5635d570d1f3f649d3d9c8dfb19..d7a3d3bd852bedc6110c6751fa9cc8ea446b62c3 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_wearable.xml @@ -102,7 +102,13 @@ <icon name="female_icon" tool_tip="Femme"/> </panel> <panel name="button_panel"> - <button label="Enregistrer sous" name="save_as_button"/> - <button label="Annuler" name="revert_button" width="130"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="save_as_btn_lp"> + <button label="Enregistrer sous" name="save_as_button"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Annuler" name="revert_button"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_friends.xml b/indra/newview/skins/default/xui/fr/panel_friends.xml deleted file mode 100644 index ad9e3daf3d948b671ee6871b0dc4eb84d5e91327..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Amis multiples - </string> - <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="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="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 ce résident de votre liste d'amis"/> - <button label="Ajouter" name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml index 5b08b4aefb2d32e206def53dec62667005886b7e..047cd692e80676b86b668f9d721284aa1b86b59f 100644 --- a/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/fr/panel_group_info_sidetray.xml @@ -13,7 +13,7 @@ Gratuit </panel.string> <panel name="group_info_top"> - <text name="group_name" value="(en cours de chargement...)"/> + <text_editor name="group_name" value="(en cours de chargement...)"/> <line_editor label="Saisissez le nom du groupe ici" name="group_name_editor"/> </panel> <layout_stack name="layout"> @@ -25,9 +25,15 @@ <accordion_tab name="group_land_tab" title="Terrain/Actifs"/> </accordion> </layout_panel> - <layout_panel name="button_row"> + </layout_stack> + <layout_stack name="button_row_ls"> + <layout_panel name="btn_chat_lp"> <button label="Chat" name="btn_chat"/> + </layout_panel> + <layout_panel name="call_btn_lp"> <button label="Appel de groupe" name="btn_call" tool_tip="Appeler ce groupe"/> + </layout_panel> + <layout_panel name="btn_apply_lp"> <button label="Enregistrer" label_selected="Enregistrer" name="btn_apply"/> <button label="Créer un groupe" name="btn_create" tool_tip="Créer un groupe"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/fr/panel_groups.xml b/indra/newview/skins/default/xui/fr/panel_groups.xml deleted file mode 100644 index 4cda98b9f7063d1fb245e90f0f2917ae617d4a95..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_groups.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <scroll_list bottom="50" name="group list"/> - <text name="groupdesc"> - Le groupe actif est en gras. - </text> - <text name="groupcount" width="280"> - Vous appartenez à [COUNT] groupes ([MAX] max). - </text> - <button label="IM/Appel" name="IM" tool_tip="Ouvrir une session de messagerie instantanée"/> - <button label="Infos" name="Info"/> - <button label="Activer" name="Activate"/> - <button label="Quitter" name="Leave"/> - <button label="Créer..." name="Create"/> - <button label="Rechercher..." name="Search..."/> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml index 9e0d08958babb04947ced8f1e00c1064474e20ce..7501e54f11156aca3e3c86e246e2e2022c55c0c4 100644 --- a/indra/newview/skins/default/xui/fr/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/fr/panel_landmarks.xml @@ -7,8 +7,16 @@ <accordion_tab name="tab_library" title="Bibliothèque"/> </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> - <button name="add_btn" tool_tip="Ajouter un nouveau repère"/> - <dnd_button name="trash_btn" tool_tip="Supprimer le repère sélectionné"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Ajouter un nouveau repère"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Supprimer le repère sélectionné"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_my_profile.xml b/indra/newview/skins/default/xui/fr/panel_my_profile.xml index ce2e5f4c602cde053695cb4fcea9b9dd8a81fa28..8dbc22d3c7434caa01c4c8b857fb11201bb49747 100644 --- a/indra/newview/skins/default/xui/fr/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_my_profile.xml @@ -42,9 +42,8 @@ </panel> </scroll_container> </layout_panel> - <layout_panel name="profile_me_buttons_panel"> - <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/> - <button label="Changer d'apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/> - </layout_panel> </layout_stack> + <panel name="profile_me_buttons_panel"> + <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml b/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml deleted file mode 100644 index b506a202bdd62bf2d0dc6b8800574f7aff9b0e59..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text - name="sender_name" -width="170">CHAT PRÈS DE MOI</text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_notes.xml b/indra/newview/skins/default/xui/fr/panel_notes.xml index 1609b6c9d37d10855e00a924c355e7a6129514ee..1b44bc4b73c7bc63ffc8b14e5a8cc4cb6a05a411 100644 --- a/indra/newview/skins/default/xui/fr/panel_notes.xml +++ b/indra/newview/skins/default/xui/fr/panel_notes.xml @@ -13,11 +13,23 @@ </scroll_container> </layout_panel> <layout_panel name="notes_buttons_panel"> - <button label="Devenir amis" name="add_friend" tool_tip="Proposer à un résident de devenir votre ami"/> - <button label="IM" name="im" width="30" tool_tip="Ouvrir une session IM"/> - <button label="Appeler" name="call" width="60" tool_tip="Appeler ce résident"/> - <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/> - <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="IM" name="im" tool_tip="Ouvrir une session IM"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Appeler" name="call" tool_tip="Appeler ce résident"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/> + </layout_panel> + </layout_stack> </layout_panel> </layout_stack> </panel> 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 5beb71981c45ffec8c209966ec778099ed1b25bd..110e0170500aa7ec827dee13239d0cf2c70fe42f 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,19 @@ <?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_panel name="notifications_list_panel" > + <scroll_list name="notifications_list"> + <column label="Nom" name="name"/> + <column label="Contenu" name="content"/> + <column label="Date" name="date"/> + </scroll_list> + </layout_panel> + <layout_panel name="rejects_list_panel" > + <scroll_list name="notification_rejects_list"> + <column label="Nom" name="name"/> + <column label="Contenu" name="content"/> + <column label="Date" name="date"/> + </scroll_list> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_online_status.xml b/indra/newview/skins/default/xui/fr/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml b/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml index a3d23b0e70c2528a40cad9e9516082416c534e3b..39bc7ef8af470d2f63e4e463495085c5ca265e51 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfit_edit.xml @@ -45,7 +45,13 @@ <button name="shop_btn_2" tool_tip="Visiter la Place du marché SL. Vous pouvez également sélectionner quelque chose que vous portez, puis cliquer ici pour consulter d'autres articles similaires."/> </panel> <panel name="save_revert_button_bar"> - <button label="Enregistrer" name="save_btn"/> - <button label="Annuler les modifications" name="revert_btn" tool_tip="Rétablir la dernière version enregistrée"/> + <layout_stack name="button_bar_ls"> + <layout_panel name="save_btn_lp"> + <button label="Enregistrer" name="save_btn"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Annuler" name="revert_btn" tool_tip="Rétablir la dernière version enregistrée"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml index 791a0bcf2e1c29bd22d32a6c61df6f5361854e29..1bc553c8c0fe69fa62c170eb6f7f0b4f0dfd8ba9 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_inventory.xml @@ -11,7 +11,13 @@ <panel label="PORTÉ" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> - <button label="Enregistrer sous" name="save_btn"/> - <button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_btn_lp"> + <button label="Enregistrer sous" name="save_btn"/> + </layout_panel> + <layout_panel name="wear_btn_lp"> + <button label="Porter" name="wear_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index f7eb803d4a9f832ec425a91a60294b55f39462dd..76edc316c20e1d171a9640d729a8af4347ced4f5 100644 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -32,9 +32,17 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife:// <accordion_tab name="tab_all" title="Tout"/> </accordion> <panel label="bottom_panel" name="bottom_panel"> - <button name="friends_viewsort_btn" tool_tip="Options"/> - <button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/> - <button name="del_btn" tool_tip="Supprimer le résident sélectionné de votre liste d'amis"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="friends_viewsort_btn" tool_tip="Afficher d'autres options"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Proposer à un résident de devenir votre ami"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Supprimer le résident sélectionné de votre liste d'amis"/> + </layout_panel> + </layout_stack> </panel> </panel> <panel label="MES GROUPES" name="groups_panel"> @@ -52,13 +60,33 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife:// </panel> </tab_container> <panel name="button_bar"> - <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/> - <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> - <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident"/> - <button label="Partager" name="share_btn" tool_tip="Partager un article d'inventaire"/> - <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/> - <button label="Profil" name="group_info_btn" tool_tip="Voir le profil du groupe"/> - <button label="Chat" name="chat_btn" tool_tip="Ouvrir une session de chat"/> - <button label="Appel" name="group_call_btn" tool_tip="Appeler ce groupe"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Profil du groupe" name="group_info_btn" tool_tip="Afficher les informations sur le groupe"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Chat de groupe" name="chat_btn" tool_tip="Ouvrir une session de chat"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Appel de groupe" name="group_call_btn" tool_tip="Appeler ce groupe"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_pick_info.xml b/indra/newview/skins/default/xui/fr/panel_pick_info.xml index 3ca1e9a21b86ab019df9a1664331015933ae85e3..1de9b243f17722b3ff385f40e234d077d4259e8b 100644 --- a/indra/newview/skins/default/xui/fr/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/fr/panel_pick_info.xml @@ -3,14 +3,22 @@ <text name="title" value="Infos"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <text name="pick_name" value="[name]"/> - <text name="pick_location" value="[loading...]"/> - <text name="pick_desc" value="[description]"/> + <text_editor name="pick_name" value="[name]"/> + <text_editor name="pick_location" value="[loading...]"/> + <text_editor name="pick_desc" value="[description]"/> </panel> </scroll_container> <panel name="buttons"> - <button label="Téléporter" name="teleport_btn"/> - <button label="Carte" name="show_on_map_btn"/> - <button label="Modifier" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Téléportation" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Carte" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Modifier" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_picks.xml b/indra/newview/skins/default/xui/fr/panel_picks.xml index 78acf929ba4f87575c326f2317106af2af70e39c..fb277f653f3da258ccad030bf1ae77a6db3559a1 100644 --- a/indra/newview/skins/default/xui/fr/panel_picks.xml +++ b/indra/newview/skins/default/xui/fr/panel_picks.xml @@ -7,11 +7,23 @@ <accordion_tab name="tab_classifieds" title="Petites annonces"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Créer un nouveau favori ou une nouvelle petite annonce à l'endroit actuel"/> + <layout_stack name="edit_panel_ls"> + <layout_panel name="gear_menu_btn"> + <button name="new_btn" tool_tip="Créer un nouveau favori ou une nouvelle petite annonce à l’endroit actuel"/> + </layout_panel> + </layout_stack> </panel> <panel name="buttons_cucks"> - <button label="Infos" name="info_btn" tool_tip="Afficher les informations du Favori"/> - <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone correspondante"/> - <button label="Carte" name="show_on_map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/> + <layout_stack name="buttons_cucks_ls"> + <layout_panel name="info_btn_lp"> + <button label="Infos" name="info_btn" tool_tip="Afficher les informations du favori"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Téléportation" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone correspondante"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Carte" name="show_on_map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml index 52a69db23cb2ca1778b99097334a948aeb1a0ede..7f3601b90dbb7d905ea3bd6664eb48cac441c3c9 100644 --- a/indra/newview/skins/default/xui/fr/panel_places.xml +++ b/indra/newview/skins/default/xui/fr/panel_places.xml @@ -4,13 +4,45 @@ <string name="teleport_history_tab_title" value="HISTORIQUE DES TÉLÉP."/> <filter_editor label="Filtrer les endroits" name="Filter"/> <panel name="button_panel"> - <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> - <button label="Carte" name="map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/> - <button label="Modifier" name="edit_btn" tool_tip="Modifier les informations du repère"/> - <button label="â–¼" name="overflow_btn" tool_tip="Afficher d'autres options"/> - <button label="Enregistrer" name="save_btn"/> - <button label="Annuler" name="cancel_btn"/> - <button label="Fermer" name="close_btn"/> - <button label="Profil" name="profile_btn" tool_tip="Afficher le profil de l'endroit"/> + <layout_stack name="bottom_bar_ls0"> + <layout_panel name="lp1"> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="teleport_btn_lp"> + <button label="Téléportation" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Carte" name="map_btn" tool_tip="Afficher la zone correspondante sur la carte du monde"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="lp2"> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="edit_btn_lp"> + <button label="Modifier" name="edit_btn" tool_tip="Modifier les informations du repère"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Afficher d'autres options"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="profile_btn_lp"> + <button label="Profil" name="profile_btn" tool_tip="Afficher le profil de l'endroit"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_close_ls3"> + <layout_panel name="close_btn_lp"> + <button label="Fermer" name="close_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls2"> + <layout_panel name="save_btn_lp"> + <button label="Enregistrer" name="save_btn"/> + </layout_panel> + <layout_panel name="cancel_btn_lp"> + <button label="Annuler" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </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 ed1107f5e683f4341f4880834913f04d5417e653..a482fa99d033e19e4400b36e53c6f0b9389c2954 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml @@ -56,27 +56,27 @@ <radio_item label="Plusieurs fenêtres" name="radio" value="0"/> <radio_item label="Onglets" name="radio2" value="1"/> </radio_group> - <check_box label="Traduire Chat" name="translate_chat_checkbox" /> + <check_box label="Utiliser la traduction automatique lors des chats (fournie par Google)" name="translate_chat_checkbox"/> <text name="translate_language_text"> - Langue de chat : + Traduire le chat en : </text> <combo_box name="translate_language_combobox"> - <combo_box.item name="System Default Language" label="Choix par défaut" /> - <combo_box.item name="English" label="English (Anglais)" /> - <combo_box.item name="Danish" label="Dansk (Danois)" /> - <combo_box.item name="German" label="Deutsch (Allemand)" /> - <combo_box.item name="Spanish" label="Español (Espagnol)" /> - <combo_box.item name="French" label="Français" /> - <combo_box.item name="Italian" label="Italiano (Italien)" /> - <combo_box.item name="Hungarian" label="Magyar (Hongrois)" /> - <combo_box.item name="Dutch" label="Nederlands (Néerlandais)" /> - <combo_box.item name="Polish" label="Polski (Polonais)" /> - <combo_box.item name="Portugese" label="Português (Portugais)" /> - <combo_box.item name="Russian" label="РуÑÑкий (Russe)" /> - <combo_box.item name="Turkish" label="Türkçe (Turc)" /> - <combo_box.item name="Ukrainian" label="УкраїнÑька (Ukrainien)" /> - <combo_box.item name="Chinese" label="ä¸æ–‡ (简体) (Chinois)" /> - <combo_box.item name="Japanese" label="日本語 (Japonais)" /> - <combo_box.item name="Korean" label="í•œêµì–´ (Coréen)" /> + <combo_box.item label="Choix par défaut" name="System Default Language"/> + <combo_box.item label="English (Anglais)" name="English"/> + <combo_box.item label="Dansk (Danois)" name="Danish"/> + <combo_box.item label="Deutsch (Allemand)" name="German"/> + <combo_box.item label="Español (Espagnol)" name="Spanish"/> + <combo_box.item label="Français" name="French"/> + <combo_box.item label="Italiano (Italien)" name="Italian"/> + <combo_box.item label="Magyar (Hongrois)" name="Hungarian"/> + <combo_box.item label="Nederlands (Néerlandais)" name="Dutch"/> + <combo_box.item label="Polski (Polonais)" name="Polish"/> + <combo_box.item label="Português (Portugais)" name="Portugese"/> + <combo_box.item label="РуÑÑкий (Russe)" name="Russian"/> + <combo_box.item label="Türkçe (Turc)" name="Turkish"/> + <combo_box.item label="УкраїнÑька (Ukrainien)" name="Ukrainian"/> + <combo_box.item label="ä¸æ–‡ (简体) (Chinois)" name="Chinese"/> + <combo_box.item label="日本語 (Japonais)" name="Japanese"/> + <combo_box.item label="í•œêµì–´ (Coréen)" name="Korean"/> </combo_box> </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 23dc2f6e8935a1593515b51890cc573a24f03d64..0c8d957f5b49d2365b5a87045ad92c505e89ac4e 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_graphics1.xml @@ -28,22 +28,16 @@ <check_box initial_value="true" label="Placage de relief et brillance" name="BumpShiny"/> <check_box initial_value="true" label="Effets de base" name="BasicShaders" tool_tip="La désactivation de cette option peut éviter le plantage de certains pilotes de cartes graphiques"/> <check_box initial_value="true" label="Effets atmosphériques" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Reflets dans l'eau" name="Reflections"/> - <text name="ReflectionDetailText"> - Objets reflétés : + <text name="reflection_label"> + Reflets dans l'eau : </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item label="Terrain et arbres" name="0"/> - <radio_item label="Tous les objets statiques" name="1"/> - <radio_item label="Tous les objets et avatars" name="2"/> - <radio_item label="Tout" name="3"/> - </radio_group> - <text name="AvatarRenderingText"> - Rendu de l'avatar : - </text> - <check_box initial_value="true" label="Avatars éloignés en 2D" name="AvatarImpostors"/> - <check_box initial_value="true" label="Accélération du rendu" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="Mouvement des habits" name="AvatarCloth"/> + <combo_box initial_value="true" label="Reflets dans l'eau" name="Reflections"> + <combo_box.item label="Minimes" name="0"/> + <combo_box.item label="Terrain et arbres" name="1"/> + <combo_box.item label="Tous les objets statiques" name="2"/> + <combo_box.item label="Tous les objets et avatars" name="3"/> + <combo_box.item label="Tout" name="4"/> + </combo_box> <slider label="Limite d'affichage :" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -81,13 +75,12 @@ <text name="SkyMeshDetailText"> Faible </text> - <text name="LightingDetailText"> - Sources lumineuses : + <text name="AvatarRenderingText"> + Rendu de l'avatar : </text> - <radio_group name="LightingDetailRadio"> - <radio_item label="Soleil et lune uniquement" name="SunMoon" value="0"/> - <radio_item label="Lumières à proximité" name="LocalLights" value="1"/> - </radio_group> + <check_box initial_value="true" label="Avatars éloignés en 2D" name="AvatarImpostors"/> + <check_box initial_value="true" label="Accélération du rendu" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Mouvement des habits" name="AvatarCloth"/> <text left="380" name="TerrainDetailText"> Rendu du terrain : </text> @@ -95,6 +88,7 @@ <radio_item label="Bas" name="0"/> <radio_item label="Haut" name="2"/> </radio_group> + --> </panel> <button label="Appliquer" label_selected="Appliquer" name="Apply"/> <button label="Réinitialiser" name="Defaults"/> diff --git a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml index f6b9bdcb8163ca1734cebaecb812af56608f1966..f16fcebd023ee3a050e03cfde787003aa3786a99 100644 --- a/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/fr/panel_prim_media_controls.xml @@ -7,9 +7,9 @@ 0.2 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Le média est en cours de chargement"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml index f1c12c9feeb6dd9436183d3d702400701dbd767c..4606f5a0c60f3323bb7779b44c9608ad3357a561 100644 --- a/indra/newview/skins/default/xui/fr/panel_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_profile.xml @@ -40,17 +40,29 @@ </panel> </scroll_container> </layout_panel> + </layout_stack> + <layout_stack name="layout_verb_buttons"> <layout_panel name="profile_buttons_panel"> - <button label="Devenir amis" name="add_friend" tool_tip="Proposer à un résident de devenir votre ami"/> - <button label="IM" name="im" tool_tip="Ouvrir une session IM"/> - <button label="Appeler" name="call" tool_tip="Appeler ce résident"/> - <button label="Carte" name="show_on_map_btn" tool_tip="Afficher le résident sur la carte"/> - <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/> - <button label="â–¼" name="overflow_btn" tool_tip="Payer ou partager l'inventaire avec le résident"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Devenir amis" name="add_friend" tool_tip="Proposer à ce résident de devenir votre ami"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="IM" name="im" tool_tip="Ouvrir une session IM"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Appeler" name="call" tool_tip="Appeler ce résident"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Téléporter" name="teleport" tool_tip="Proposer une téléportation"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Payer le résident ou partager l'inventaire avec lui"/> + </layout_panel> + </layout_stack> </layout_panel> <layout_panel name="profile_me_buttons_panel"> <button label="Modifier le profil" name="edit_profile_btn" tool_tip="Modifier vos informations personnelles"/> - <button label="Changer d'apparence" name="edit_appearance_btn" tool_tip="Créer/modifier votre apparence : données physiques, habits, etc."/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml b/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml deleted file mode 100644 index 663ae5513411b5e66d475c819c781a8b83fbfe18..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/fr/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Région" name="General"> - <text name="region_text_lbl"> - Région : - </text> - <text left_delta="56" name="region_text"> - inconnu - </text> - <text name="version_channel_text_lbl"> - Version : - </text> - <text left_delta="56" name="version_channel_text"> - inconnu - </text> - <text name="region_type_lbl"> - Type : - </text> - <text left_delta="56" name="region_type"> - inconnu - </text> - <check_box label="Interdire le terraformage" name="block_terraform_check"/> - <check_box label="Interdire le vol" name="block_fly_check"/> - <check_box label="Autoriser les dégâts" name="allow_damage_check"/> - <check_box label="Interdire les bousculades" name="restrict_pushobject"/> - <check_box label="Autoriser la revente de terrains" name="allow_land_resell_check"/> - <check_box label="Autoriser la fusion/division de terrains" name="allow_parcel_changes_check"/> - <check_box label="Interdire l'affichage du terrain dans les recherches" name="block_parcel_search_check" tool_tip="Permettre aux autres résidents de voir cette région et ses parcelles dans les résultats de recherche"/> - <spinner label="Nombre maximum d'avatars" label_width="160" name="agent_limit_spin" width="240"/> - <spinner label="Bonus objet" label_width="160" name="object_bonus_spin" width="240"/> - <text label="Accès" name="access_text"> - Catégorie : - </text> - <combo_box label="Modéré" name="access_combo"> - <combo_box.item label="Adulte" name="Adult"/> - <combo_box.item label="Modéré" name="Mature"/> - <combo_box.item label="Général" name="PG"/> - </combo_box> - <button label="Appliquer" name="apply_btn"/> - <button label="Téléporter un résident chez lui…" name="kick_btn"/> - <button label="Téléporter tous les résidents chez eux…" name="kick_all_btn"/> - <button label="Envoyer un message à la région..." name="im_btn"/> - <button label="Gérer le téléhub..." name="manage_telehub_btn"/> -</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml index 2899f630f44f5cc8432ced1fccdc58cc93d0d672..45efbdc980c5d94d40dedfa1b80630f1afb41618 100644 --- a/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/fr/panel_side_tray_tab_caption.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="Panneau latéral"/> + <button name="undock" tool_tip="Détacher"/> + <button name="dock" tool_tip="Attacher"/> <button name="show_help" tool_tip="Afficher l'aide"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index ebee1af45b2d035a74820ffe7170ffb75b7cc111..3c4d2626c1d3e2c799c8776fc524bd70d0437bf4 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -2,12 +2,20 @@ <panel label="Choses" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Profil" name="info_btn" tool_tip="Afficher le profil de l'objet"/> - <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/> - <button label="Acheter" name="shop_btn" tool_tip="Accéder à la place du marché sur le Web"/> - <button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/> - <button label="Jouer" name="play_btn"/> - <button label="Téléporter" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="info_btn_lp"> + <button label="Profil" name="info_btn" tool_tip="Afficher le profil de l'article"/> + </layout_panel> + <layout_panel name="share_btn_lp"> + <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/> + </layout_panel> + <layout_panel name="shop_btn_lp"> + <button label="Acheter" name="shop_btn" tool_tip="Accéder à la place du marché sur le Web"/> + <button label="Porter" name="wear_btn" tool_tip="Porter la tenue sélectionnée"/> + <button label="Lire" name="play_btn"/> + <button label="Téléportation" name="teleport_btn" tool_tip="Me téléporter jusqu'à la zone sélectionnée"/> + </layout_panel> + </layout_stack> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml index 77c6f4877c2be72beaf505a4c5438ddc6805ccae..95649d39348d06ab42ffc433929c3ee268e0ec58 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_item_info.xml @@ -23,56 +23,53 @@ </panel.string> <text name="title" value="Profil de l'article"/> <text name="origin" value="(inventaire)"/> - <panel label="" name="item_profile"> - <text name="LabelItemNameTitle"> - Nom : - </text> - <text name="LabelItemDescTitle"> - Description : - </text> - <text name="LabelCreatorTitle"> - Créateur : - </text> - <text name="LabelCreatorName"/> - <button label="Profil" name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Propriétaire : - </text> - <text name="LabelOwnerName"/> - <button label="Profil" name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Acquis le : - </text> - <text name="LabelAcquiredDate"/> - <panel name="perms_inv"> - <text name="perm_modify"> - Vous pouvez : + <scroll_container name="item_profile_scroll"> + <panel label="" name="item_profile"> + <text name="LabelItemNameTitle"> + Nom : </text> - <check_box label="Modifier" name="CheckOwnerModify"/> - <check_box label="Copier" name="CheckOwnerCopy"/> - <check_box label="Transférer" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - N'importe qui : + <text name="LabelItemDescTitle"> + Description : </text> - <check_box label="Copier" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Groupe : + <text name="LabelCreatorTitle"> + Créateur : </text> - <check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autoriser tous les membres du groupe choisi à partager vos droits de modification pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Céder."/> - <text name="NextOwnerLabel"> - Prochain propriétaire : + <text name="LabelOwnerTitle"> + Propriétaire : </text> - <check_box label="Modifier" name="CheckNextOwnerModify"/> - <check_box label="Copier" name="CheckNextOwnerCopy"/> - <check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet."/> + <text name="LabelAcquiredTitle"> + Acquis le : + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Vous pouvez : + </text> + <check_box label="Modifier" name="CheckOwnerModify"/> + <check_box label="Copier" name="CheckOwnerCopy"/> + <check_box label="Transférer" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + N'importe qui : + </text> + <check_box label="Copier" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Groupe : + </text> + <check_box label="Partager" name="CheckShareWithGroup" tool_tip="Autoriser tous les membres du groupe choisi à partager vos droits de modification pour cet objet. Pour activer les restrictions de rôles, vous devez d'abord cliquer sur Céder."/> + <text name="NextOwnerLabel"> + Prochain propriétaire : + </text> + <check_box label="Modifier" name="CheckNextOwnerModify"/> + <check_box label="Copier" name="CheckNextOwnerCopy"/> + <check_box label="Transférer" name="CheckNextOwnerTransfer" tool_tip="Le prochain propriétaire peut donner ou revendre cet objet."/> + </panel> + <check_box label="À vendre" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copier" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Prix : L$" name="Edit Cost"/> </panel> - <check_box label="À vendre" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copier" name="Copy"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Prix : L$" name="Edit Cost"/> - </panel> + </scroll_container> <panel name="button_panel"> <button label="Annuler" name="cancel_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 159281f97fbc4860ca4fb45dc4b0b6209bd39bf9..a7a766f6a6bf11e79194ef575650dab507ed33a4 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1294,6 +1294,9 @@ <string name="Right Pec"> Pectoral droit </string> + <string name="Invalid Attachment"> + Point d'attache non valide + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1671,9 +1674,6 @@ <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD en bas à droite </string> - <string name="Bad attachment point"> - Point d'attache non valide - </string> <string name="CursorPos"> Ligne [LINE], colonne [COLUMN] </string> @@ -1695,12 +1695,6 @@ <string name="BusyModeResponseDefault"> Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu'il a demandé à ne pas être dérangé. Votre message restera affiché dans son panneau IM afin qu'il puisse le lire ultérieurement. </string> - <string name="NoOutfits"> - Aucune tenue n'est actuellement en votre possession. Essayez [secondlife:///app/search/all Rechercher]. - </string> - <string name="NoOutfitsTabsMatched"> - Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/Rechercher [SEARCH_TERM]]. - </string> <string name="MuteByName"> (par nom) </string> @@ -1741,7 +1735,7 @@ Vous n'avez pas créé de favoris ni de petites annonces Cliquez sur le bouton Plus pour créer un favori ou une petite annonce. </string> <string name="NoAvatarPicksClassifiedsText"> - L'utilisateur n'a ni favoris ni petites annonces + L'utilisateur n'a ni favoris ni petites annonces. </string> <string name="PicksClassifiedsLoadingText"> Chargement... @@ -1864,6 +1858,12 @@ <string name="accel-win-shift"> Maj+ </string> + <string name="Esc"> + Échap + </string> + <string name="Home"> + Début + </string> <string name="FileSaved"> Fichier enregistré </string> @@ -3528,6 +3528,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="IM_moderator_label"> (Modérateur) </string> + <string name="Saved_message"> + (Enregistrement : [LONG_TIMESTAMP]) + </string> <string name="answered_call"> Votre appel a fait l'objet d'une réponse </string> @@ -3555,12 +3558,18 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="conference-title"> Conférence ad-hoc </string> + <string name="conference-title-incoming"> + Conférence avec [AGENT_NAME] + </string> <string name="inventory_item_offered-im"> Objet de l'inventaire offert </string> <string name="share_alert"> Faire glisser les objets de l'inventaire ici </string> + <string name="no_session_message"> + (Session IM inexistante) + </string> <string name="only_user_message"> Vous êtes le seul participant à cette session. </string> @@ -3945,4 +3954,13 @@ de l'infraction signalée <string name="Chat"> Chat </string> + <string name="DeleteItems"> + Supprimer les articles sélectionnés ? + </string> + <string name="DeleteItem"> + Supprimer l'article sélectionné ? + </string> + <string name="EmptyOutfitText"> + Cette tenue ne contient aucun article. + </string> </strings> diff --git a/indra/newview/skins/default/xui/it/floater_about.xml b/indra/newview/skins/default/xui/it/floater_about.xml index 026b7b7616d250479943accfdf550e13f4f1358c..140f7bdc145802f9d2c069971a5360de2b801ab1 100644 --- a/indra/newview/skins/default/xui/it/floater_about.xml +++ b/indra/newview/skins/default/xui/it/floater_about.xml @@ -45,7 +45,7 @@ Versione Server voice: [VOICE_VERSION] <text_editor name="credits_editor"> Second Life ti è offerto da Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain e molti altri ancora. -Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan e molti altri ancora. +Si ringraziano i seguenti residenti per aver contribuito a rendere questa versione la migliore possibile: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan e molti altri ancora. diff --git a/indra/newview/skins/default/xui/it/floater_customize.xml b/indra/newview/skins/default/xui/it/floater_customize.xml deleted file mode 100644 index 63c26b4d732e4161c8644a0da42acc6d8c807026..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_customize.xml +++ /dev/null @@ -1,530 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="ASPETTO"> - <tab_container name="customize tab container" tab_min_width="120"> - <text label="Parti del corpo" name="body_parts_placeholder"> - Parti del corpo - </text> - <panel label="Forma del corpo" left="124" name="Shape"> - <button label="Crea una nuova forma del corpo" label_selected="Crea una nuova forma del corpo" name="Create New" width="190"/> - <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 label="Femmina" name="radio" value="0"/> - <radio_item label="Maschio" name="radio2" value="1"/> - </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"> - Metti una nuova figura corporea trascinandola dal tuo inventario sul tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <text name="no modify instructions"> - Non hai il permesso di modificare questo indumento. - </text> - <text name="Item Action Label"> - Forma del corpo: - </text> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert"/> - </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"> - Per mettere una nuova pelle, trascinala dal tuo inventario sul tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </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 label="Tatuaggi: testa" name="Head Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> - <texture_picker label="Tatuaggi: superiori" name="Upper Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> - <texture_picker label="Tatuaggi: inferiori" name="Lower Tattoos" tool_tip="Clicca per scegliere un'immagine" width="96"/> - <button label="Crea una nuova pelle" label_selected="Crea una nuova pelle" name="Create New"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." name="Save As"/> - <button font="SansSerifSmall" 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"> - Per cambiare capelli, trascinali dal tuo inventario sul tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </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 label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Puoi cambiare gli occhi trascinandoli dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </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 label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </panel> - <text label="Vestiti" name="clothes_placeholder"> - Abiti - </text> - <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 aprire il selettore dei colori"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Crea una nuova camicia" label_selected="Crea una nuova camicia" name="Create New"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - <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"> - Metti una nuova camicia trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </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 aprire il selettore dei colori"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Crea nuovi pantaloni" label_selected="Crea nuovi pantaloni" name="Create New"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - <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"> - Metti dei nuovi pantaloni trascinandoli dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </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"> - Metti delle nuove scarpe trascinandole dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea nuove scarpe" label_selected="Crea nuove scarpe" name="Create New"/> - <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 aprire il selettore dei colori"/> - <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..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti delle nuove calze trascinandole dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea nuove calze" label_selected="Crea nuove calze" name="Create New"/> - <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 aprire il selettore dei colori"/> - <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..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti una nuova giacca trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea una nuova giacca" label_selected="Crea una nuova giacca" name="Create New"/> - <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 label="Tessuto: superiore" name="Upper Fabric" tool_tip="Clicca per scegliere un'immagine" width="96"/> - <texture_picker label="Tessuto: inferiore" name="Lower Fabric" tool_tip="Clicca per scegliere un'immagine" width="96"/> - <color_swatch label="Colore/Tinta" name="Color/Tint" tool_tip="Clicca per aprire il selettore dei colori"/> - <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..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti dei nuovi guanti trascinandoli dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea nuovi guanti" label_selected="Crea nuovi guanti" name="Create New"/> - <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 aprire il selettore dei colori"/> - <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti una nuova maglietta intima trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea una nuova canottiera" label_selected="Crea una nuova canottiera" name="Create New"/> - <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 aprire il selettore dei colori"/> - <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti dei nuovi slip trascinandoli dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea nuove mutande" label_selected="Crea nuove mutande" name="Create New"/> - <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 aprire il selettore dei colori"/> - <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </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"> - Metti una nuova gonna trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea una nuova gonna" label_selected="Crea una nuova gonna" name="Create New"/> - <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 aprire il selettore dei colori"/> - <button font="SansSerifSmall" label="Rimuovi l'indumento" label_selected="Rimuovi l'indumento" name="Take Off" width="115"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva come..." label_selected="Salva come..." left="171" name="Save As"/> - <button font="SansSerifSmall" label="Annulla le modifiche" label_selected="Annulla le modifiche" name="Revert" width="120"/> - </panel> - <panel label="Tatuaggio" name="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: non può essere modificato - </text> - <text name="title_loading"> - [DESC]: caricamento in corso... - </text> - <text name="title_not_worn"> - [DESC]: non indossato - </text> - <text name="path"> - Collocato in [PATH] - </text> - <text name="not worn instructions"> - Metti un nuovo tatuaggio trascinandolo dal tuo inventario al avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea un nuovo tatuaggio" label_selected="Crea un nuovo tatuaggio" name="Create New"/> - <text name="no modify instructions"> - Non hai i permessi per modificare questo capo. - </text> - <text name="Item Action Label"> - Tatuaggio: - </text> - <texture_picker label="Tatuaggio della testa" name="Head Tattoo" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Tatuaggio superiore" name="Upper Tattoo" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Tattuaggio inferiore" name="Lower Tattoo" tool_tip="Clicca per scegliere una fotografia"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/> - <button label="Ripristina" label_selected="Ripristina" name="Revert"/> - </panel> - <panel label="Alpha (Trasparenza)" name="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: non può essere modificato - </text> - <text name="title_loading"> - [DESC]: caricamento in corso... - </text> - <text name="title_not_worn"> - [DESC]: non indossato - </text> - <text name="path"> - Collocato in [PATH] - </text> - <text name="not worn instructions"> - Metti una nuova alpha mask trascinandola dal tuo inventario al tuo avatar. Oppure, crea un nuovo tatuaggio e indossalo. - </text> - <button label="Crea nuovo Alpha" label_selected="Crea nuovo Alpha" name="Create New"/> - <text name="no modify instructions"> - Non hai i permessi per modificare questo capo. - </text> - <text name="Item Action Label"> - Alpha: - </text> - <texture_picker label="Alpha inferiore" name="Lower Alpha" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Alpha superiore" name="Upper Alpha" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Alpha della testa" name="Head Alpha" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Alpha dell'occhio" name="Eye Alpha" tool_tip="Clicca per scegliere una fotografia"/> - <texture_picker label="Alpha dei capelli" name="Hair Alpha" tool_tip="Clicca per scegliere una fotografia"/> - <button label="Togli" label_selected="Togli" name="Take Off"/> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Salva con nome..." label_selected="Salva con nome..." name="Save As"/> - <button label="Ripristina" label_selected="Ripristina" name="Revert"/> - </panel> - </tab_container> - <scroll_container name="panel_container"/> - <button label="Informazioni script" label_selected="Informazioni script" name="script_info" tool_tip="Mostra gli script collegati al tuo avatar"/> - <button label="Crea vestiario" label_selected="Crea vestiario" name="make_outfit_btn"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</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 deleted file mode 100644 index 97aa64086d4c4c4f8a7bf4f746255b09ad9711b2..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="OPZIONI CHAT VOCALE"/> diff --git a/indra/newview/skins/default/xui/it/floater_im.xml b/indra/newview/skins/default/xui/it/floater_im.xml deleted file mode 100644 index aa916adf2c00a7faf60677c3d9b912822d71d4ed..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title=""> - <string name="only_user_message"> - Sei il solo residente presente nella 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 bloccato questo residente. Quando gli invii un messaggio, verrà automaticamente sbloccato. - </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 residenti alla sessione 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_im_session.xml b/indra/newview/skins/default/xui/it/floater_im_session.xml index 8d395ea04bc5e64e184e05e4efe06d7a8da85d4a..3d9d17fc81ada808766e00cd9c8bb4b0bf33ad78 100644 --- a/indra/newview/skins/default/xui/it/floater_im_session.xml +++ b/indra/newview/skins/default/xui/it/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="Pannello di controllo IM" name="panel_im_control_panel"/> <layout_panel> <line_editor label="A" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/it/floater_my_friends.xml b/indra/newview/skins/default/xui/it/floater_my_friends.xml deleted file mode 100644 index faeba0a6d9a580cab2502691bae6e5c1dabec317..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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_outfit_save_as.xml b/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml deleted file mode 100644 index dff5f33e5751d41fc9ad2395e64d1f397c169237..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Salva vestiario"> - <button label="Salva" label_selected="Salva" name="Save"/> - <button label="Annulla" label_selected="Annulla" name="Cancel"/> - <text name="Save item as:"> - Salva quello che indosso -come nuovo vestiario: - </text> - <line_editor name="name ed"> - [DESC] (nuovo) - </line_editor> -</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 deleted file mode 100644 index c617f81f7bb328f052d8881463581af2a04ce991..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMAZIONI RISERVATE"> - <floater.string name="Title"> - Riservato: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_event.xml b/indra/newview/skins/default/xui/it/floater_preview_event.xml deleted file mode 100644 index 1e1653e7581a62bb3c25c572e5e6dfc28ad73a38..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFORMAZIONI SULL'EVENTO"> - <floater.string name="Title"> - Evento: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml deleted file mode 100644 index d490416cc7e7de128e11fdfe42f0a83a60f2e244..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="SCORCIATOIA GESTURE"/> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml deleted file mode 100644 index eb0bc4d86877e1265bd2d70becba32e4d436b86b..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="SCORCIATOIA GESTURE"> - <text name="trigger_label"> - Chat: - </text> - <text name="key_label"> - Tastiera: - </text> - <combo_box label="Nessuno" name="modifier_combo"/> - <combo_box label="Nessuno" name="key_combo"/> - <text name="replace_text" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, se si sceglie di sostituire la parola chiave 'ciao' con 'buongiorno', nella chat il testo 'Volevo dire ciao' diventerà 'Volevo dire buongiorno' e verrà attivata la gesture."> - Sostituisci: - </text> - <line_editor name="replace_editor" tool_tip="Sostituisci la parola chiave con queste parole. Per esempio, se si sceglie di sostituire la parola chiave 'ciao' con 'buongiorno', nella chat il testo 'Volevo dire ciao' diventerà 'Volevo dire buongiorno' e verrà attivata la gesture"/> -</floater> diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml deleted file mode 100644 index d490416cc7e7de128e11fdfe42f0a83a60f2e244..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="SCORCIATOIA GESTURE"/> diff --git a/indra/newview/skins/default/xui/it/floater_statistics.xml b/indra/newview/skins/default/xui/it/floater_statistics.xml deleted file mode 100644 index 00df1ff99493e0230e8c42951a6734f28f2c9d5c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?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_voice_controls.xml b/indra/newview/skins/default/xui/it/floater_voice_controls.xml index d2fd462062c415d23d6e7692dc156c44dc5c7e8a..4741d8d32f223653c26e5de0f6be0119b36e6c65 100644 --- a/indra/newview/skins/default/xui/it/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/it/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Il mio avatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Abbandona chiamata" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Abbandona chiamata" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </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 deleted file mode 100644 index 7c3754f00473b98a41f7302afba22b302c748ece..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?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 nel mio inventario come: - </text> - <line_editor name="name ed"> - Nuovo [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/it/menu_avatar_self.xml b/indra/newview/skins/default/xui/it/menu_avatar_self.xml index 7796d412863878b80ad8afc9bd12980a176b290a..7d918423c3ba38edc521764b5cf2752de33d4dcd 100644 --- a/indra/newview/skins/default/xui/it/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/it/menu_avatar_self.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> <menu_item_call label="Alzati" name="Stand Up"/> - <context_menu label="Togli â–¶" name="Take Off >"> - <context_menu label="Abiti â–¶" name="Clothes >"> + <context_menu label="Togli" name="Take Off >"> + <context_menu label="Abiti" name="Clothes >"> <menu_item_call label="Camicia" name="Shirt"/> <menu_item_call label="Pantaloni" name="Pants"/> <menu_item_call label="Gonna" name="Skirt"/> @@ -16,8 +16,8 @@ <menu_item_call label="Alpha (Trasparenza)" name="Self Alpha"/> <menu_item_call label="Tutti gli abiti" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Stacca â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Stacca" name="Object Detach"/> <menu_item_call label="Stacca tutto" name="Detach All"/> </context_menu> <menu_item_call label="Cambia vestiario" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/it/menu_object.xml b/indra/newview/skins/default/xui/it/menu_object.xml index 81f27ab8fa0ea7ab4da98898aa897fbe61a37765..413fcfdc8aaa72002365047bcd357cba3b6c873c 100644 --- a/indra/newview/skins/default/xui/it/menu_object.xml +++ b/indra/newview/skins/default/xui/it/menu_object.xml @@ -10,12 +10,12 @@ <menu_item_call label="Alzati" name="Object Stand Up"/> <menu_item_call label="Profilo dell'oggetto" name="Object Inspect"/> <menu_item_call label="Zoom avanti" name="Zoom In"/> - <context_menu label="Indossa â–¶" name="Put On"> + <context_menu label="Indossa" name="Put On"> <menu_item_call label="Indossa" name="Wear"/> - <context_menu label="Attacca â–¶" name="Object Attach"/> - <context_menu label="Attacca HUD â–¶" name="Object Attach HUD"/> + <context_menu label="Attacca" name="Object Attach"/> + <context_menu label="Attacca HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Togli â–¶" name="Remove"> + <context_menu label="Togli" name="Remove"> <menu_item_call label="Segnala abuso" name="Report Abuse..."/> <menu_item_call label="Blocca" name="Object Mute"/> <menu_item_call label="Restituisci" name="Return..."/> diff --git a/indra/newview/skins/default/xui/it/menu_participant_list.xml b/indra/newview/skins/default/xui/it/menu_participant_list.xml index f70b886a1e2a787f03e0386d3f930e4809c9f63f..52e3c933da01d0ceca254c4c739e572a583f1776 100644 --- a/indra/newview/skins/default/xui/it/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/it/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="Icone persone" name="View Icons"/> <menu_item_check label="Blocca voce" name="Block/Unblock"/> <menu_item_check label="Blocca testo" name="MuteText"/> - <context_menu label="Opzioni moderatore >" name="Moderator Options"> + <context_menu label="Opzioni moderatore " name="Moderator Options"> <menu_item_check label="Consenti chat di testo" name="AllowTextChat"/> <menu_item_call label="Disattiva audio di questo participante" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Riattiva audio di questo participante" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml index 4848d95370abbb539bbc5e67c2ddf9290496e8c3..b0bd68966d5498618a97a81e0d6315ef59625430 100644 --- a/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/it/menu_wearable_list_item.xml @@ -5,8 +5,8 @@ <menu_item_call label="Aggiungi" name="wear_add"/> <menu_item_call label="Togli / Stacca" name="take_off_or_detach"/> <menu_item_call label="Stacca" name="detach"/> - <context_menu label="Attacca a â–¶" name="wearable_attach_to"/> - <context_menu label="Attacca a HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Attacca a" name="wearable_attach_to"/> + <context_menu label="Attacca a HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Togli" name="take_off"/> <menu_item_call label="Modifica" name="edit"/> <menu_item_call label="Profilo dell'oggetto" name="object_profile"/> diff --git a/indra/newview/skins/default/xui/it/panel_audio_device.xml b/indra/newview/skins/default/xui/it/panel_audio_device.xml deleted file mode 100644 index 166db8199952be5a6e8fff142482101a8b6cfee3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?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 deleted file mode 100644 index cfe162a67bfd5fe1fd29a3356b65c6a4dd3d2b66..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Più amici - </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" name="add_btn" tool_tip="Offri amicizia a un residente"/> -</panel> diff --git a/indra/newview/skins/default/xui/it/panel_groups.xml b/indra/newview/skins/default/xui/it/panel_groups.xml deleted file mode 100644 index 43fd36710ebac7d3a3f34211b128446e320af155..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_groups.xml +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <scroll_list bottom="50" name="group list"/> - <text bottom="16" height="32" name="groupdesc" width="268"> - Il tuo gruppo attualmente attivo è visualizzato -in grassetto. - </text> - <text bottom="3" name="groupcount" width="268"> - Appartieni a [COUNT] gruppo/i (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_nearby_chat.xml b/indra/newview/skins/default/xui/it/panel_nearby_chat.xml deleted file mode 100644 index 7ffe972181bd84cc61b8bfab8c290a461f3b4b87..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - CHAT NEI DINTORNI - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/it/panel_notes.xml b/indra/newview/skins/default/xui/it/panel_notes.xml index 9ce6b47a325deba1d9a84a1f880eeb9b938a8c70..945bff16039405586c79fe755f8f228a0cbbd3a9 100644 --- a/indra/newview/skins/default/xui/it/panel_notes.xml +++ b/indra/newview/skins/default/xui/it/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Note e Privacy" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Le mie note private:"/> @@ -11,13 +11,13 @@ <check_box label="Modificare, eliminare o prendere i miei oggetti" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> + </layout_panel> + <layout_panel name="notes_buttons_panel"> <button label="Aggiungi amico" name="add_friend" tool_tip="Offri amicizia a questo residente"/> <button label="IM" name="im" tool_tip="Apri una sessione messaggio istantaneo"/> <button label="Chiama" name="call" tool_tip="Chiama questo residente"/> <button label="Mappa" name="show_on_map_btn" tool_tip="Mostra il residente sulla mappa"/> <button label="Teleport" name="teleport" tool_tip="Offri teleport"/> - </panel> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_online_status.xml b/indra/newview/skins/default/xui/it/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml index ef7aaf2e8cb924bd7da7def6ab16ca89bdd212dd..4620d729770308bc47b5fdda955e29881a33c03f 100644 --- a/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/it/panel_prim_media_controls.xml @@ -13,9 +13,9 @@ 50 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="L'elemento multimediale è in caricamento"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/it/panel_region_general_layout.xml b/indra/newview/skins/default/xui/it/panel_region_general_layout.xml deleted file mode 100644 index 4cf31f4b6e409ad6ecf48fc6346ac258a2399f21..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/it/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?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"> - sconosciuto - </text> - <text name="version_channel_text_lbl"> - Versione: - </text> - <text name="version_channel_text"> - sconosciuto - </text> - <text name="region_type_lbl"> - Tipo: - </text> - <text name="region_type"> - sconosciuto - </text> - <check_box label="Impedisci Terraform" name="block_terraform_check"/> - <check_box label="Impedisci volo" name="block_fly_check"/> - <check_box label="Permetti danni" name="allow_damage_check"/> - <check_box label="Limita spinte" name="restrict_pushobject"/> - <check_box label="Permetti la rivendita dei terreni" name="allow_land_resell_check"/> - <check_box label="Permetti l'unione/divisione del terreno" name="allow_parcel_changes_check"/> - <check_box label="Impedisci la visualizzazione del terreno nelle ricerche" name="block_parcel_search_check" tool_tip="Permetti alla gente di vedere questa regione e i suoi lotti nei risultati dellla ricerca"/> - <spinner label="N. massimo di avatar" name="agent_limit_spin"/> - <spinner label="Bonus oggetto" name="object_bonus_spin"/> - <text label="Categoria di accesso" name="access_text"> - Categoria: - </text> - <combo_box label="Moderato" name="access_combo"> - <combo_box.item label="Adulti" name="Adult"/> - <combo_box.item label="Moderato" name="Mature"/> - <combo_box.item label="Generale" name="PG"/> - </combo_box> - <button label="Applica" name="apply_btn"/> - <button label="Teleport a casa un residente..." name="kick_btn"/> - <button label="Teleport a casa tutti i residenti..." name="kick_all_btn"/> - <button label="Invia messaggio alla regione..." name="im_btn"/> - <button label="Gestisci telehub..." name="manage_telehub_btn"/> -</panel> diff --git a/indra/newview/skins/default/xui/ja/floater_about.xml b/indra/newview/skins/default/xui/ja/floater_about.xml index d2765eb0c87885e484290a23c28c90928dfd31bc..61fedede3526e3a8092de507b15904bd1ba07e71 100644 --- a/indra/newview/skins/default/xui/ja/floater_about.xml +++ b/indra/newview/skins/default/xui/ja/floater_about.xml @@ -45,7 +45,7 @@ Qt Webkit ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š [QT_WEBKIT_VERSION] <text_editor name="credits_editor"> Second Life ã¯ã€Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain ãã®ä»–大勢ã®æ–¹ã€…ã«ã‚ˆã£ã¦æä¾›ã•ã‚Œã¦ã„ã¾ã™ã€‚ -ç¾åœ¨æœ€ã‚‚優れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãªã‚‹ã‚ˆã†ã”å”力ã„ãŸã ã„ãŸæ¬¡ã®ä½äººã®çš†æ§˜ã«æ·±ãæ„Ÿè¬ã„ãŸã—ã¾ã™ã€‚ Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan ãã®ä»–大勢ã®æ–¹ã€…。 +ç¾åœ¨æœ€ã‚‚優れãŸãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨ãªã‚‹ã‚ˆã†ã”å”力ã„ãŸã ã„ãŸæ¬¡ã®ä½äººã®çš†æ§˜ã«æ·±ãæ„Ÿè¬ã„ãŸã—ã¾ã™ã€‚ Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan ãã®ä»–大勢ã®æ–¹ã€…。 diff --git a/indra/newview/skins/default/xui/ja/floater_customize.xml b/indra/newview/skins/default/xui/ja/floater_customize.xml deleted file mode 100644 index cc0032e1ab037237d9e94f7afcec1bcef81280b0..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_customize.xml +++ /dev/null @@ -1,529 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="容姿"> - <tab_container name="customize tab container"> - <text label="身体部ä½" name="body_parts_placeholder"> - èº«ä½“éƒ¨ä½ - </text> - <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"/> - <radio_group name="sex radio"> - <radio_item label="女性" name="radio" value="0"/> - <radio_item label="男性" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„シェイプをã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„スã‚ンをã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„髪をã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„目をã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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> - <text label="æœ" name="clothes_placeholder"> - 衣類 - </text> - <panel label="シャツ" name="Shirt"> - <texture_picker label="生地" name="Fabric" tool_tip="写真をクリックã—ã¦é¸æŠž"/> - <color_swatch label="色ï¼æ˜Žæš—" name="Color/Tint" tool_tip="クリックã—ã¦ã‚«ãƒ©ãƒ¼ãƒ”ッカーを開ãã¾ã™"/> - <button label="å–り外ã™" label_selected="å–り外ã™" name="Take Off"/> - <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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„シャツをç€ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </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="Take Off"/> - <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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„パンツを履ãã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <text name="Item Action Label"> - パンツ: - </text> - </panel> - <panel label="é´" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„é´ã‚’å±¥ãã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„é´ã‚’作æˆ" label_selected="æ–°ã—ã„é´ã‚’作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„é´ä¸‹ã‚’å±¥ãã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" label_selected="æ–°ã—ã„é´ä¸‹ã‚’作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„ジャケットをç€ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„上ç€ã‚’作æˆ" label_selected="æ–°ã—ã„上ç€ã‚’作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„手袋をã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„手袋を作æˆ" label_selected="æ–°ã—ã„手袋を作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«1ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„下ç€ï¼ˆä¸Šï¼‰ã‚’ç€ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" label_selected="æ–°ã—ã„下ç€ã‚·ãƒ£ãƒ„を作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„下ç€ï¼ˆä¸‹ï¼‰ã‚’å±¥ãã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„パンツを作æˆ" label_selected="æ–°ã—ã„パンツを作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ã§ãã¾ã›ã‚“。 - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‰ä¸ï¼Žï¼Žï¼Ž - </text> - <text name="title_not_worn"> - [DESC]: 未装ç€ã€‚ - </text> - <text name="path"> - [PATH] ã«æ‰€åœ¨ - </text> - <text name="not worn instructions"> - æŒã¡ç‰©ã‹ã‚‰ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã« 1 ã¤ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„スカートを履ãã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="スカートを作æˆ" label_selected="スカートを作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã‚ãªãŸã¯ã“ã®æœã®ä¿®æ£ã‚’許ã•ã‚Œã¦ã„ã¾ã›ã‚“。 - </text> - <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="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="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ä¸å¯ - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... - </text> - <text name="title_not_worn"> - [DESC]: 未ç€ç”¨ - </text> - <text name="path"> - å‚ç…§ [PATH] - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„タトゥをã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„タトゥを作æˆ" label_selected="æ–°ã—ã„タトゥを作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã“ã®ç€ç”¨ç‰©ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。 - </text> - <text name="Item Action Label"> - タトゥ: - </text> - <texture_picker label="é 部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Head Tattoo" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="上部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Upper Tattoo" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="下部ã®ã‚¿ãƒˆã‚¥ãƒ¼" name="Lower Tattoo" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <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="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: ä¿®æ£ä¸å¯ - </text> - <text name="title_loading"> - [DESC]: ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... - </text> - <text name="title_not_worn"> - [DESC]: 未ç€ç”¨ - </text> - <text name="path"> - å‚ç…§ [PATH] - </text> - <text name="not worn instructions"> - ã‚ãªãŸã®æŒã¡ç‰©ã‹ã‚‰ã‚¢ãƒã‚¿ãƒ¼ã«ãƒ‰ãƒ©ãƒƒã‚°ã—ã¦ã€æ–°ã—ã„アルファマスクをã¤ã‘ã¾ã™ã€‚ 代ã‚ã‚Šã«ã€ã¯ã˜ã‚ã‹ã‚‰æ–°ã—ã作æˆã—ã¦ç€ç”¨ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ - </text> - <button label="æ–°ã—ã„アルファを作æˆ" label_selected="æ–°ã—ã„アルファを作æˆ" name="Create New"/> - <text name="no modify instructions"> - ã“ã®ç€ç”¨ç‰©ã‚’ä¿®æ£ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。 - </text> - <text name="Item Action Label"> - アルファ: - </text> - <texture_picker label="アルファ(下)" name="Lower Alpha" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="アルファ(上)" name="Upper Alpha" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="é 部ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="Head Alpha" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="ç›®ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="Eye Alpha" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <texture_picker label="髪ã®ã‚¢ãƒ«ãƒ•ã‚¡" name="Hair Alpha" tool_tip="クリックã—ã¦å†™çœŸã‚’é¸æŠžã—ã¾ã™"/> - <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="script_info" tool_tip="ã‚ãªãŸã®ã‚¢ãƒã‚¿ãƒ¼ã«ä»˜ã„ã¦ã„るスクリプトを表示ã—ã¾ã™"/> - <button label="アウトフィット作æˆ" label_selected="アウトフィット作æˆ" name="make_outfit_btn"/> - <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_device_settings.xml b/indra/newview/skins/default/xui/ja/floater_device_settings.xml deleted file mode 100644 index 3ae7356fb65fa3d132c4c845e8f9677b3fb06170..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="ボイスãƒãƒ£ãƒƒãƒˆæ©Ÿå™¨ã®è¨å®š"/> diff --git a/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml b/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml deleted file mode 100644 index fce9185b8ac94d1f0cbd5310a1573e231a69d73f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_first_time_tip.xml +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="set_name_in_the_cladd"> - <check_box label="クイックヒントをオフã«ã™ã‚‹" name="DontShowFirstTimeTip_checkbox"/> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_im.xml b/indra/newview/skins/default/xui/ja/floater_im.xml deleted file mode 100644 index 2e8993ec2123db44b34c4cf3672c5c0fdbf87d81..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_im.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="インスタント・メッセージ"> - <string name="only_user_message"> - ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ã¯ã€ã‚ãªãŸã—ã‹ã„ã¾ã›ã‚“。 - </string> - <string name="offline_message"> - [FIRST] [LAST]ã¯ã‚ªãƒ•ãƒ©ã‚¤ãƒ³ã§ã™ã€‚ - </string> - <string name="invite_message"> - ã“ã®ãƒœã‚¤ã‚¹ãƒãƒ£ãƒƒãƒˆã«å¿œç”/接続ã™ã‚‹å ´åˆã¯ã€[BUTTON NAME]をクリックã—ã¦ãã ã•ã„。 - </string> - <string name="muted_message"> - ã“ã®ä½äººã‚’ブãƒãƒƒã‚¯ã—ã¦ã„ã¾ã™ã€‚ メッセージをé€ã‚‹ã¨ã€ãƒ–ãƒãƒƒã‚¯ãŒè‡ªå‹•çš„ã«è§£é™¤ã•ã‚Œã¾ã™ã€‚ - </string> - <string name="generic_request_error"> - è¦æ±‚ä¸ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚後ã§ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。 - </string> - <string name="insufficient_perms_error"> - ã‚ãªãŸã«ã¯å……分ãªæ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。 - </string> - <string name="session_does_not_exist_error"> - ã“ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã¯æ—¢ã«åˆ‡æ–ã•ã‚Œã¦ã„ã¾ã™ã€‚ - </string> - <string name="no_ability_error"> - ã‚ãªãŸã«ã¯ãã®èƒ½åŠ›ãŒã‚ã‚Šã¾ã›ã‚“。 - </string> - <string name="not_a_mod_error"> - ã‚ãªãŸã¯ã‚»ãƒƒã‚·ãƒ§ãƒ³ãƒ»ãƒ¢ãƒ‡ãƒ¬ãƒ¼ã‚¿ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 - </string> - <string name="muted_error"> - グループモデレータãŒã‚ãªãŸã®ãƒ†ã‚ストãƒãƒ£ãƒƒãƒˆã‚’無効化ã—ã¾ã—㟠- </string> - <!-- ALL of the event strings should have [RECIPIENT] in them --> - <string name="add_session_event"> - [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ä½äººã‚’è¿½åŠ ã§ãã¾ã›ã‚“。 - </string> - <string name="message_session_event"> - [RECIPIENT] ã¨ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ - </string> - <string name="removed_from_group"> - ã‚ãªãŸã¯ã‚°ãƒ«ãƒ¼ãƒ—ã‹ã‚‰å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚ - </string> - <string name="close_on_no_ability"> - ã“ã®ãƒãƒ£ãƒƒãƒˆãƒ»ã‚»ãƒƒã‚·ãƒ§ãƒ³ã‚’継続ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/ja/floater_im_session.xml b/indra/newview/skins/default/xui/ja/floater_im_session.xml index 6646cc0b251c4d27d5fe89796b6555003ec9f683..dfa1c85ca23b4bad4545f613ad9769ebc43d6a43 100644 --- a/indra/newview/skins/default/xui/ja/floater_im_session.xml +++ b/indra/newview/skins/default/xui/ja/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="IM コントãƒãƒ¼ãƒ«ãƒ‘ãƒãƒ«" name="panel_im_control_panel"/> <layout_panel> <line_editor label="宛先" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/ja/floater_my_friends.xml b/indra/newview/skins/default/xui/ja/floater_my_friends.xml deleted file mode 100644 index b55cdde5b5bcf9d7a368c9b88671549b40fabaff..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater min_width="500" name="floater_my_friends" title="連絡先"> - <tab_container name="friends_and_groups"> - <panel label="フレンド" name="friends_panel"/> - <panel label="グループ" name="groups_panel"/> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml deleted file mode 100644 index 70555e6ded8e623e38d57ecbdb5270adece2b974..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="アウトフィットをä¿å˜ã™ã‚‹"> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> - <button label="ã‚ャンセル" label_selected="ã‚ャンセル" name="Cancel"/> - <text name="Save item as:"> - ç€ç”¨ã—ã¦ã„ã‚‹ã‚‚ã®ã‚’ -æ–°ã—ã„アウトフィットã«ä¿å˜ï¼š - </text> - <line_editor name="name ed"> - [DESC] (新) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_classified.xml b/indra/newview/skins/default/xui/ja/floater_preview_classified.xml deleted file mode 100644 index ba3bb028b2600bc5f709a9600ec17aff16b2a4be..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="ã‚¯ãƒ©ã‚·ãƒ•ã‚¡ã‚¤ãƒ‰åºƒå‘Šæƒ…å ±"> - <floater.string name="Title"> - クラシファイド広告: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_event.xml b/indra/newview/skins/default/xui/ja/floater_preview_event.xml deleted file mode 100644 index 21f57ca7a3ef1763f1138d8bbdd7b7e1423a69a6..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="ã‚¤ãƒ™ãƒ³ãƒˆæƒ…å ±"> - <floater.string name="Title"> - イベント: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml deleted file mode 100644 index 682b295a146092739d4fae03bd9bd46830373c55..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ジェスãƒãƒ£ãƒ¼ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml deleted file mode 100644 index e96a43d0c1b1b350a5ec4e736e244c3bccd7deee..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ジェスãƒãƒ£ãƒ¼ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ"> - <text name="trigger_label"> - ãƒãƒ£ãƒƒãƒˆï¼š - </text> - <text name="key_label"> - ã‚ーボード: - </text> - <combo_box label="ãªã—" name="modifier_combo" width="60"/> - <combo_box label="ãªã—" name="key_combo" width="60"/> - <text name="replace_text" tool_tip="ã“れらã®å˜èªžã«ãƒˆãƒªã‚¬ãƒ¼ã¨ãªã‚‹å˜èªžã‚’ç½®ãæ›ãˆã¾ã™ã€‚ 例ãˆã°ã€ã€Œhowdyã€ã¨ã€Œhelloã€ã‚’ç½®ãæ›ãˆã‚‹ã¨ã€ã€ŒI wanted to say helloã€ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆã¯ã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã‚’交ãˆãªãŒã‚‰ã®ã€ŒI wanted to say howdyã€ã«å¤‰ã‚ã‚Šã¾ã™ã€‚"> - ç½®ãæ›ãˆï¼š - </text> - <line_editor name="replace_editor" tool_tip="ã“れらã®å˜èªžã«ãƒˆãƒªã‚¬ãƒ¼ã¨ãªã‚‹å˜èªžã‚’ç½®ãæ›ãˆã¾ã™ã€‚ 例ãˆã°ã€ã€Œhowdyã€ã¨ã€Œhelloã€ã‚’ç½®ãæ›ãˆã‚‹ã¨ã€ã€ŒI wanted to say helloã€ã¨ã„ã†ãƒãƒ£ãƒƒãƒˆã¯ã€ã‚¸ã‚§ã‚¹ãƒãƒ£ãƒ¼ã‚’交ãˆãªãŒã‚‰ã®ã€ŒI wanted to say howdyã€ã«å¤‰ã‚ã‚Šã¾ã™ã€‚"/> -</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml deleted file mode 100644 index 682b295a146092739d4fae03bd9bd46830373c55..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ジェスãƒãƒ£ãƒ¼ã®ã‚·ãƒ§ãƒ¼ãƒˆã‚«ãƒƒãƒˆ"/> diff --git a/indra/newview/skins/default/xui/ja/floater_statistics.xml b/indra/newview/skins/default/xui/ja/floater_statistics.xml deleted file mode 100644 index de83e97b80309e0d2392fe3f8e5913b70ee61b4b..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="統計"/> diff --git a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml index 4b95aa544f9ebfaf50b2dd2c41df738fe3e80979..0caca22bc114574d6653c5a25809a8924c00fa8b 100644 --- a/indra/newview/skins/default/xui/ja/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/ja/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="マイ ã‚¢ãƒã‚¿ãƒ¼ï¼š"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="コール終了" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="コール終了" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml deleted file mode 100644 index de8b590a802b12e284c31df67ffc0257dd439235..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=" "> - <button label="ä¿å˜" label_selected="ä¿å˜" name="Save"/> - <button label="å–り消ã—" label_selected="å–り消ã—" name="Cancel"/> - <text name="Save item as:"> - アイテムを別åã§æŒã¡ç‰©ã«ä¿å˜ï¼š - </text> - <line_editor name="name ed"> - New [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml index 6899a819b81b7e8a0b876be591babe38349db24c..bca90cf5e432c497d054c10c3d9b6c92b4cfff6a 100644 --- a/indra/newview/skins/default/xui/ja/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/ja/menu_avatar_self.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> <menu_item_call label="ç«‹ã¡ä¸ŠãŒã‚‹" name="Stand Up"/> - <context_menu label="脱ã â–¶" name="Take Off >"> - <context_menu label="衣類 â–¶" name="Clothes >"> + <context_menu label="脱ã" name="Take Off >"> + <context_menu label="衣類" name="Clothes >"> <menu_item_call label="シャツ" name="Shirt"/> <menu_item_call label="パンツ" name="Pants"/> <menu_item_call label="スカート" name="Skirt"/> @@ -16,8 +16,8 @@ <menu_item_call label="アルファ" name="Self Alpha"/> <menu_item_call label="ã™ã¹ã¦ã®è¡£é¡ž" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="å–り外㙠▶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="å–り外ã™" name="Object Detach"/> <menu_item_call label="ã™ã¹ã¦å–り外ã™" name="Detach All"/> </context_menu> <menu_item_call label="アウトフィットを変更" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/ja/menu_object.xml b/indra/newview/skins/default/xui/ja/menu_object.xml index be25a2932e6ac1b7972b865f37515ccacfaacf87..6724f2d1090d575e30f356364372ad99660149ce 100644 --- a/indra/newview/skins/default/xui/ja/menu_object.xml +++ b/indra/newview/skins/default/xui/ja/menu_object.xml @@ -10,12 +10,12 @@ <menu_item_call label="ç«‹ã¡ä¸ŠãŒã‚‹" name="Object Stand Up"/> <menu_item_call label="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«" name="Object Inspect"/> <menu_item_call label="ズームイン" name="Zoom In"/> - <context_menu label="è£…ç€ â–¶" name="Put On"> + <context_menu label="装ç€" name="Put On"> <menu_item_call label="装ç€" name="Wear"/> - <context_menu label="å–り付ã‘ã‚‹ â–¶" name="Object Attach"/> - <context_menu label="HUD ã‚’å–り付ã‘ã‚‹ â–¶" name="Object Attach HUD"/> + <context_menu label="å–り付ã‘ã‚‹" name="Object Attach"/> + <context_menu label="HUD ã‚’å–り付ã‘ã‚‹" name="Object Attach HUD"/> </context_menu> - <context_menu label="å–り除ã â–¶" name="Remove"> + <context_menu label="å–り除ã" name="Remove"> <menu_item_call label="å«ŒãŒã‚‰ã›ã®å ±å‘Š" name="Report Abuse..."/> <menu_item_call label="ブãƒãƒƒã‚¯" name="Object Mute"/> <menu_item_call label="è¿”å´" name="Return..."/> diff --git a/indra/newview/skins/default/xui/ja/menu_participant_list.xml b/indra/newview/skins/default/xui/ja/menu_participant_list.xml index 3ef83756cbca5a4275b3c54f4595c4093cd993e6..64d8ded722bcfe1e942605dd5d30acc7c9bf0726 100644 --- a/indra/newview/skins/default/xui/ja/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/ja/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="人ã®ã‚¢ã‚¤ã‚³ãƒ³è¡¨ç¤º" name="View Icons"/> <menu_item_check label="ボイスをブãƒãƒƒã‚¯" name="Block/Unblock"/> <menu_item_check label="æ–‡å—をブãƒãƒƒã‚¯" name="MuteText"/> - <context_menu label="モデレーターã®ã‚ªãƒ—ション >" name="Moderator Options"> + <context_menu label="モデレーターã®ã‚ªãƒ—ション" name="Moderator Options"> <menu_item_check label="æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚’許å¯" name="AllowTextChat"/> <menu_item_call label="ã“ã®å‚åŠ è€…ã‚’ãƒŸãƒ¥ãƒ¼ãƒˆã™ã‚‹" name="ModerateVoiceMuteSelected"/> <menu_item_call label="ã“ã®å‚åŠ è€…ã®ãƒŸãƒ¥ãƒ¼ãƒˆã‚’解除ã™ã‚‹" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml index 73a8f87afd31600d8352aaf45683fc31894f053d..273fbd856c173fa7d2e7827c6307a1fbc07ce446 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearable_list_item.xml @@ -5,8 +5,8 @@ <menu_item_call label="è¿½åŠ " name="wear_add"/> <menu_item_call label="å–り外ã™" name="take_off_or_detach"/> <menu_item_call label="å–り外ã™" name="detach"/> - <context_menu label="è£…ç€ â–¶" name="wearable_attach_to"/> - <context_menu label="HUDã«è£…ç€ â–¶" name="wearable_attach_to_hud"/> + <context_menu label="装ç€" name="wearable_attach_to"/> + <context_menu label="HUDã«è£…ç€" name="wearable_attach_to_hud"/> <menu_item_call label="å–り外ã™" name="take_off"/> <menu_item_call label="編集" name="edit"/> <menu_item_call label="オブジェクトã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«" name="object_profile"/> diff --git a/indra/newview/skins/default/xui/ja/panel_audio_device.xml b/indra/newview/skins/default/xui/ja/panel_audio_device.xml deleted file mode 100644 index 2352c609899d0505ab06be4dc9290d72aa0f0a39..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_audio_device.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="device_settings"> - <text name="Audio Devices"> - オーディオ機器 - </text> - <text name="Output device (speakers):"> - 出力機器 (スピーカー): - </text> - <text name="Input device (microphone):"> - 入力機器(マイクãƒãƒ•ã‚©ãƒ³): - </text> - <text name="Input level:"> - 入力レベル - </text> - <text_editor name="voice_intro_text1"> - スライダを調節ã—ã¦ã€ä»–ã®ä½äººã«èžã“ãˆã‚‹ã‚ãªãŸã®éŸ³é‡ã‚’制御ã—ã¾ã™ã€‚マイクãƒãƒ•ã‚©ãƒ³ã«å‘ã‹ã£ã¦è©±ã™ã ã‘ã§ã€å…¥åŠ›ãƒ¬ãƒ™ãƒ«ã‚’テストã§ãã¾ã™ã€‚ - </text_editor> - <volume_slider name="mic_volume_slider" - tool_tip="ã“ã®ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼ã‚’使用ã—ã¦ã€ãƒœãƒªãƒ¥ãƒ¼ãƒ を変ãˆã¦ãã ã•ã„。" /> - <text name="wait_text"> - ãŠå¾…ã¡ãã ã•ã„ - </text> - <text name="default_text"> - デフォルト - </text> -</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_friends.xml b/indra/newview/skins/default/xui/ja/panel_friends.xml deleted file mode 100644 index 0c7114dbb7c5e0d07e01c383dcd98ae73baefc9f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_friends.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - 複数ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ - </string> - <scroll_list name="friend_list" tool_tip="複数ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã‚’é¸æŠžã™ã‚‹ã«ã¯ã€Shift ã‚ーã¾ãŸã¯ Ctrl ã‚ーを押ã—ãªãŒã‚‰åå‰ã‚’クリックã—ã¾ã™ã€‚"> - <column name="icon_online_status" tool_tip="オンライン状態"/> - <column label="åå‰" name="friend_name" tool_tip="åå‰"/> - <column name="icon_visible_online" tool_tip="フレンドã¯ã€ã‚ãªãŸãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³ã‹ã©ã†ã‹ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> - <column name="icon_visible_map" tool_tip="フレンドã¯ã€åœ°å›³ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’è¦‹ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> - <column name="icon_edit_mine" tool_tip="フレンドã¯ã€ã‚ªãƒ–ジェクトを編集ã€å‰Šé™¤ã€ã¾ãŸã¯å–å¾—ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> - <column name="icon_edit_theirs" tool_tip="ã‚ãªãŸã¯ã€ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã®ã‚ªãƒ–ジェクトを編集ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚"/> - </scroll_list> - <panel name="rights_container"> - <text name="friend_name_label" right="-10"> - フレンドをé¸æŠžã—ã¦æ¨©åˆ©ã‚’変更... - </text> - <check_box label="オンライン状態ã®ç¢ºèªã‚’許å¯ã™ã‚‹" name="online_status_cb" tool_tip="コーリングカードã‚ã‚‹ã„ã¯ãƒ•ãƒ¬ãƒ³ãƒ‰ãƒªã‚¹ãƒˆã§ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ãŒã‚ªãƒ³ãƒ©ã‚¤ãƒ³çŠ¶æ…‹ã‚’確èªã§ãるよã†è¨å®šã—ã¾ã™"/> - <check_box label="世界地図上ã§ã‚ãªãŸã®å±…å ´æ‰€ã‚’æ¤œç´¢å¯èƒ½ã«ã™ã‚‹" name="map_status_cb" tool_tip="ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ãŒåœ°å›³ã§ç§ã®ä½ç½®ã‚’発見ã§ãるよã†ã«è¨å®šã—ã¾ã™"/> - <check_box label="オブジェクトã®ä¿®æ£ã‚’許å¯ã™ã‚‹" name="modify_status_cb" tool_tip="ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã«ç§ã®ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆã‚’æ”¹é€ ã™ã‚‹è¨±å¯ã‚’与ãˆã¾ã™"/> - <text name="process_rights_label"> - 権利変更をプãƒã‚»ã‚¹ä¸... - </text> - </panel> - <pad left="-95"/> - <button label="IM・コール" name="im_btn" tool_tip="インスタントメッセージセッションを開ãã¾ã™ã€‚" width="90"/> - <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="profile_btn" tool_tip="写真ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€ãŠã‚ˆã³ãã®ä»–ã®æƒ…å ±ã‚’è¡¨ç¤ºã—ã¾ã™ã€‚" width="90"/> - <button label="テレãƒãƒ¼ãƒˆ" name="offer_teleport_btn" tool_tip="ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã«ã€ã‚ãªãŸã®ç¾åœ¨åœ°ã¸ã®ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’申ã—出ã¾ã™ã€‚" width="90"/> - <button label="支払ã†" name="pay_btn" tool_tip="リンデンドル (L$) ã‚’ã“ã®ãƒ•ãƒ¬ãƒ³ãƒ‰ã«ã‚ã’ã¾ã™ã€‚" width="90"/> - <button label="削除" name="remove_btn" tool_tip="ã“ã®äººç‰©ã‚’フレンドリストã‹ã‚‰å¤–ã—ã¾ã™ã€‚" width="90"/> - <button label="è¿½åŠ " name="add_btn" tool_tip="フレンド登録を申ã—出ã¾ã™ã€‚" width="90"/> -</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_groups.xml b/indra/newview/skins/default/xui/ja/panel_groups.xml deleted file mode 100644 index de81a6431ab4fae0af1c134d70627d4be106a44e..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_groups.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="groups"> - <text name="groupdesc"> - アクティブãªã‚°ãƒ«ãƒ¼ãƒ—ã¯å¤ªå—ã§è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ - </text> - <text name="groupcount" width="270"> - [COUNT] ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«æ‰€å±žã—ã¦ã„ã¾ã™ (最大[MAX]) - </text> - <button label="IM・コール" name="IM" - tool_tip="インスタントメッセージ・セッションを開ã" /> - <button label="æƒ…å ±" name="Info" /> - <button label="アクティブ" name="Activate" /> - <button label="抜ã‘ã‚‹" name="Leave" /> - <button label="作æˆ..." name="Create" /> - <button label="検索..." name="Search..." /> -</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml b/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml deleted file mode 100644 index c0549c8ae9ca77d837e4d798117852a0b325b97c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - è¿‘ãã®ãƒãƒ£ãƒƒãƒˆ - </text> - </panel> -</panel> 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 5723535fd2185aa522e74395770e93c905f236ac..aff427ed49fa4de14a60e8a9bfa2ad5f6a063df9 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,19 @@ <?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_panel name="notifications_list_panel"> + <scroll_list name="notifications_list"> + <column label="åå‰" name="name"/> + <column label="コンテンツ" name="content"/> + <column label="日付" name="date"/> + </scroll_list> + </layout_panel> + <layout_panel name="rejects_list_panel"> + <scroll_list name="notification_rejects_list"> + <column label="åå‰" name="name"/> + <column label="コンテンツ" name="content"/> + <column label="日付" name="date"/> + </scroll_list> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_online_status.xml b/indra/newview/skins/default/xui/ja/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml index a9897c7ae4cfe6ad5c85a002b6f8db3588245ba4..5506373eb08a01300d271345c08be6ab3ffb6b9f 100644 --- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -7,9 +7,9 @@ 0.2 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml b/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml deleted file mode 100644 index 188a60eb603971b1c8538a0baad27aae4fab2ddf..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/ja/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="リージョン(地域)" name="General"> - <text name="region_text_lbl"> - 地域: - </text> - <text left_delta="70" name="region_text"> - ä¸æ˜Ž - </text> - <text name="version_channel_text_lbl"> - ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼š - </text> - <text left_delta="70" name="version_channel_text"> - ä¸æ˜Ž - </text> - <text name="region_type_lbl"> - 種類: - </text> - <text left_delta="70" name="region_type"> - ä¸æ˜Ž - </text> - <check_box label="地形編集をブãƒãƒƒã‚¯" name="block_terraform_check"/> - <check_box label="飛行をブãƒãƒƒã‚¯" name="block_fly_check"/> - <check_box label="ダメージを許å¯" name="allow_damage_check"/> - <check_box label="プッシュを制é™" name="restrict_pushobject"/> - <check_box label="土地ã®å†è²©ã‚’許å¯" name="allow_land_resell_check"/> - <check_box label="土地ã®çµ±åˆãƒ»åˆ†å‰²ã‚’許å¯" name="allow_parcel_changes_check"/> - <check_box label="土地ã®æ¤œç´¢è¡¨ç¤ºã‚’ブãƒãƒƒã‚¯" name="block_parcel_search_check" tool_tip="検索çµæžœã§ã€ã“ã®åœ°åŸŸã¨åŒºç”»ã‚’表示ã™ã‚‹ã‹ã©ã†ã‹ã®è¨å®šã§ã™"/> - <spinner label="ã‚¢ãƒã‚¿ãƒ¼æ•°ä¸Šé™" label_width="110" name="agent_limit_spin" width="190"/> - <spinner label="物体ボーナス" label_width="110" name="object_bonus_spin" width="190"/> - <text label="レーティング区分" name="access_text"> - レーティング区分: - </text> - <combo_box label="Moderate" name="access_combo"> - <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Moderate" name="Mature"/> - <combo_box.item label="General" name="PG"/> - </combo_box> - <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/nl/floater_about.xml b/indra/newview/skins/default/xui/nl/floater_about.xml index f71f935c24856b24fd94ece6f8ac2097a23c89b9..f543ebbbe35e15e796047cf4a2a71c8e175deac2 100644 --- a/indra/newview/skins/default/xui/nl/floater_about.xml +++ b/indra/newview/skins/default/xui/nl/floater_about.xml @@ -45,7 +45,7 @@ Vivox Versie: [VIVOX_VERSION] <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, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl and many others. -Een 'Dank u' voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar +Een 'Dank u' voor de volgende bewoners voor het helpen zorgdragen dat dit de beste versie tot nu toe is: able whitman, Adeon Writer, adonaira aabye, Aeron Kohime, Agathos Frascati, Aimee Trescothick, Aleric Inglewood, Alissa Sabre, Aminom Marvin, Angela Talamasca, Aralara Rajal, Armin Weatherwax, Ashrilyn Hayashida, Athanasius Skytower, Aura Dirval, Barney Boomslang, Biancaluce Robbiani, Biker Offcourse, Borg Capalini, Bulli Schumann, catherine pfeffer, Chalice Yao, Corre Porta, Court Goodman, Cummere Mayo, Dale Innis, Darien Caldwell, Darjeeling Schoonhoven, Daten Thielt, dimentox travanti, Dirk Talamasca, Drew Dwi, Duckless Vandyke, Elanthius Flagstaff, Electro Burnstein, emiley tomsen, Escort DeFarge, Eva Rau, Ezian Ecksol, Fire Centaur, Fluf Fredriksson, Francisco Koolhoven, Frontera Thor, Frungi Stastny, Gally Young, gearsawe stonecutter, Gigs Taggart, Gordon Wendt, Gudmund Shepherd, Gypsy Paz, Harleen Gretzky, Henri Beauchamp, Inma Rau, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Iskar Ariantho, Jacek Antonelli, JB Kraft, Jessicka Graves, Joeseph Albanese, Joshua Philgarlic, Khyota Wulluf, kirstenlee Cinquetti, Latif Khalifa, Lex Neva, Lilibeth Andree, Lisa Lowe, Lunita Savira, Loosey Demonia, lum pfohl, Marcos Fonzarelli, MartinRJ Fayray, Marusame Arai, Matthew Dowd, Maya Remblai, McCabe Maxsted, Meghan Dench, Melchoir Tokhes, Menos Short, Michelle2 Zenovka, Mimika Oh, Minerva Memel, Mm Alder, Ochi Wolfe, Omei Turnbull, Pesho Replacement, Phantom Ninetails, phoenixflames kukulcan, Polo Gufler, prez pessoa, princess niven, Prokofy Neva, Qie Niangao, Rem Beattie, RodneyLee Jessop, Saijanai Kuhn, Seg Baphomet, Sergen Davies, Shirley Marquez, SignpostMarv Martin, Sindy Tsure, Sira Arbizu, Skips Jigsaw, Sougent Harrop, Spritely Pixel, Squirrel Wood, StarSong Bright, Subversive Writer, Sugarcult Dagger, Sylumm Grigorovich, Tammy Nowotny, Tanooki Darkes, Tayra Dagostino, Theoretical Chemistry, Thickbrick Sleaford, valerie rosewood, Vex Streeter, Vixen Heron, Whoops Babii, Winter Ventura, Xiki Luik, Yann Dufaux, Yina Yao, Yukinoroh Kamachi, Zolute Infinity, Zwagoth Klaar diff --git a/indra/newview/skins/default/xui/nl/floater_customize.xml b/indra/newview/skins/default/xui/nl/floater_customize.xml deleted file mode 100644 index e6a4ed7a2749b2455864e92ed63d5831d912ebc8..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/floater_customize.xml +++ /dev/null @@ -1,469 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="UITERLIJK"> - <tab_container name="customize tab container" tab_min_width="120"> - <placeholder 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 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_im.xml b/indra/newview/skins/default/xui/nl/floater_im.xml deleted file mode 100644 index 3167af532108a2e4c204a51011d96df525b0efb3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?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_my_friends.xml b/indra/newview/skins/default/xui/nl/floater_my_friends.xml deleted file mode 100644 index 8d709d3c0046392d747ed1ad183b9ced693c5cb2..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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_statistics.xml b/indra/newview/skins/default/xui/nl/floater_statistics.xml deleted file mode 100644 index 7684a73663b63eee7fa0670d5ec7d63608d64bfc..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="STATISTIEKEN"/> diff --git a/indra/newview/skins/default/xui/nl/panel_audio_device.xml b/indra/newview/skins/default/xui/nl/panel_audio_device.xml deleted file mode 100644 index fd5dda799f479b27de5dca2a8982da2119c644ad..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?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 deleted file mode 100644 index eaf6e5d55b3ec3dc5d879e47de52abd60b784901..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?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" width="86"/> - <button label="Profiel" name="profile_btn" tool_tip="Toon afbeelding, groepen en andere informatie" width="86"/> - <button label="Teleport..." name="offer_teleport_btn" tool_tip="Bied deze vriend een teleport naar uw huidige locatie aan" width="86"/> - <button label="Betaal..." name="pay_btn" tool_tip="Geef Linden dollars (L$) aan deze vriend" width="86"/> - <button label="Verwijderen..." name="remove_btn" tool_tip="Verwijder deze persoon van uw vriendenlijst" width="86"/> - <button label="Toevoegen..." name="add_btn" tool_tip="Bied vriendschap aan een inwoner aan" width="86"/> -</panel> diff --git a/indra/newview/skins/default/xui/nl/panel_groups.xml b/indra/newview/skins/default/xui/nl/panel_groups.xml deleted file mode 100644 index a0c77b83ffbfa42fbabbf0c76bfb7a221650e234..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/nl/panel_groups.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?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" width="300"> - U behoort tot [COUNT] groepen (maximaal [MAX]). - </text> - <button label="IM/Oproepen" name="IM" tool_tip="Open Instant Message sessie" width="86"/> - <button label="Info" name="Info" width="86"/> - <button label="Activeren" name="Activate" width="86"/> - <button label="Verlaten" name="Leave" width="86"/> - <button label="Maak…" name="Create" width="86"/> - <button label="Zoeken…" name="Search..." width="86"/> -</panel> diff --git a/indra/newview/skins/default/xui/pl/floater_about.xml b/indra/newview/skins/default/xui/pl/floater_about.xml index e032008e7b7666373141cac7578bf880cb43b885..637325ddd022758643998bf8b51b227afc888be9 100644 --- a/indra/newview/skins/default/xui/pl/floater_about.xml +++ b/indra/newview/skins/default/xui/pl/floater_about.xml @@ -45,7 +45,7 @@ Wersja serwera gÅ‚osu: [VOICE_VERSION] <text_editor name="credits_editor"> Second Life zostaÅ‚o stworzone dla Was przez Philip, Tessa, Andrew, Cory, Ian, James, Phoenix, Ryan, Haney, Dan, Char, Ben, John, Tanya, Eddie, Richard, Mitch, Doug, Eric, Frank, Bruce, Aaron, Peter, Alice, Charlie, Debra, Eileen, Helen, Janet, Steffan, Steve, Tom, Mark, Hunter, Xenon, Burgess, Bill, Jim, Lee, Hamlet, Daniel, Jeff, Todd, Sarah, Tim, Stephanie, Colin, Michael, Evan, Nicolas, Catherine, Rachelle, Dave, Holly, Bub, Kelly, Ramzi, Don, Sabin, Jill, Rheya, Jeska, Torley, Kona, Callum, Charity, Jack, Vektor, Chris, Nicole, Mick, Reuben, Blue, Babbage, Yedwab, Deana, Lauren, Brent, Pathfinder, Chadrick, Jesse, David, Tess, Lizzie, Patsy, Isaac, Lawrence, Cyn, Bo, Gia, Annette, Marius, Tbone, Jonathan, Karen, Ginsu, Yuko, Makiko, Thomas, Harry, Seth, Brian, Guy, Runitai, Ethan, Data, Cornelius, Kenny, Swiss, Zero, Brad, Natria, Wendy, Stephen, Teeple, Thumper, Lucy, Dee, Mia, Liana, Warren, Branka, Aura, Beez, Milo, Hermia, Red, Thrax, Gulliver, Joe, Sally, Paul, Jose, Rejean, Dore, Henrik, Lexie, Amber, Logan, Xan, Nora, Morpheus, Donovan, Leyla, MichaelFrancis, Beast, Cube, Bucky, Joshua, Stryfe, Harmony, Teresa, Claudia, Walker, Glenn, Fritz, Fordak, June, Cleopetra, Ivy, Betsy, Roosevelt, Spike, Ken, Which, Tofu, Chiyo, Rob, Zee, Dustin, George, Del, Matthew, Cat, Jacqui, Adrian, Viola, Alfred, Noel, Irfan, Yool, Rika, Jane, Frontier, Neo, Siobhan, Yoz, Justin, Elle, Qarl, Benjamin, Isabel, Everett, Christopher, Izzy, Stephany, Garry, Sejong, Sean, Tobin, Iridium, Meta, Jeremy, JP, Jake, Anthony, Maurice, Madhavi, Leopard, Kyle, Joon, Bert, Belinda, Jon, Kristi, Bridie, Pramod, Socrates, Maria, Aric, Adreanne, Jay, Kari, Ceren, Coco, Durl, Jenny, Periapse, Kartic, Storrs, Lotte, Sandy, Colossus, Zen, BigPapi, Pastrami, Kurz, Mani, Neuro, Mel, Sardonyx, MJ, Rowan, Sgt, Elvis, Samuel, Leo, Bryan, Niko, Austin, Soft, Poppy, Rachel, Aki, Banzai, Alexa, Sue, Bender, CG, Angelo, 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, Mitchell, Space, Colton, Bambers, Einstein, Maggie, Malbers, Rose, Rothman, Niall, Marin, Allison, Katie, Dawn, Dusty, Katt, Judy, Andrea, Ambroff, Infinity, Rico, Gail, Kalpana, Raymond, Yi, William, Christa, M, Teagan, Scout, Molly, Dante, Corr, Dynamike, Usi, Kaylee, Lil, Danica, Sascha, Kelv, Jacob, Nya, Rodney, Brandon, Elsie, Blondin, Grant, Katrin, Nyx, Gabriel, Locklainn, Claire, Devin, Minerva, Monty, 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, Maestro, Simone, Yang, T, Shannon, Nelson, Khanh, Scott, Courtney, Charlene, Quixote, Susan, Zed, Amanda, Katelin, Enkidu, Roxie, Esbee, JoRoan, Scarlet, Tay, Kevin, Wolfgang, Johnny, Ray, Andren, Merov, Bob, Rand, Howard, Callen, Heff, Galen, Newell, Dessie, Les, Michon, Jenelle, Geo, Siz, Shapiro, Pete, Calyle, Selene, Allen, Phoebe, Goldin, Kimmora, Dakota, Slaton, Lindquist, Zoey, Hari, Othello, Rohit, Sheldon, Petra, Viale, Gordon, Kaye, Pink, Ferny, Emerson, Davy, Bri, Chan, Juan, Robert, Terrence, Nathan, Carl, Ashley, JessieAnn, Huseby, Karina, Paris, Kurt, Rick, Lis, Kotler, Theeba, Lynx, Murphy, Doten, Taka, Norm, Jillian, Marcus, Mae, Novack, Esther, Perry, Dana, Ducot, Javier, Porter, Madison, Gecko, Dough, JR, Gisele, Crimp, Norie, Arch, Kimi, Fisher, Barbara, Jason, Peggy, Bernard, Jules, Leroy, Eva, Khederian, Campbell, Vogt, Masido, Karel, Torres, Lo, Breezer, Delby, Rountree, Anna, Servus, Rue, Itiaes, Chuck, Luna, Novella, Zaza, Wen, Gino, Lex, Cassandra, Limey, Nancy, Anukul, Silver, Brodesky, Jinsai, Squid, Gez, Rakesh, Ladan, Edelman, Marcet, Squire, Tatem, Tony, Jerm, Tia, Falcon, BK, Tiggs, Driscoll, Bacon, Timothee, Cru, Carmilla, Coyot, Webb, Kazu, Rudas, LJ, Sea, Ali Wallace, Bewest, Pup, Drub, Dragon, Inoshiro, Byron, Rhett, Xandix, Aimee, Fredrik, Thor, Teddy, Baron, Nelly, Ghengis, Epic, Eli, Stone, Grapes, Irie, Prep, Scobu, Valerie, Alain, and many others. -PodziÄ™kowania dla nastÄ™pujÄ…cych Rezydentów za pomoc w pracy nad obecnÄ… wersjÄ… Second Life: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. +PodziÄ™kowania dla nastÄ™pujÄ…cych Rezydentów za pomoc w pracy nad obecnÄ… wersjÄ… Second Life: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan, and many others. diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml index 0f49061002e151c527ff4fe690cd42969292f65f..1c24e0b35e64b82fc63403e4aa70a0b24c0b8423 100644 --- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml @@ -30,8 +30,8 @@ <icon name="icon_sound" tool_tip="DźwiÄ™ki"/> <check_box label="Tekstury" name="check_texture"/> <icon name="icon_texture" tool_tip="Tekstury"/> - <button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all" width="115"/> - <button font="SansSerifSmall" label="Å»adne" label_selected="Å»adne" name="check_none" width="115"/> + <button font="SansSerifSmall" label="√ Wszystkie" label_selected="Wszystkie" name="check_all"/> + <button font="SansSerifSmall" label="Å»adne" label_selected="Å»adne" name="check_none"/> <text name="newperms"> Nowe prawa zawartoÅ›ci </text> diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml deleted file mode 100644 index 373e74ffe0d48a80e162d0e8c34820433dc488b0..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_customize.xml +++ /dev/null @@ -1,529 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="WYGLÄ„D"> - <tab_container name="customize tab container"> - <text label="Części ciaÅ‚a" name="body_parts_placeholder"> - Części ciaÅ‚a - </text> - <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"/> - <radio_group name="sex radio"> - <radio_item label="Kobieta" name="radio" value="0"/> - <radio_item label="Mężczyzna" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: zabroniona modyfikacja - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tego ksztaÅ‚tu. - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tej skórki. - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych wÅ‚osów. - </text> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych oczów. - </text> - <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> - <text label="Ubrania" name="clothes_placeholder"> - Ubrania - </text> - <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 aby wybrać kolor"/> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> - <button label="Nowa koszula" label_selected="Nowa Koszula" 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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikowanie zabronione - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tej koszuli. - </text> - <text name="Item Action Label"> - Koszula: - </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 aby wybrać kolor"/> - <button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/> - <button label="Nowe spodnie" label_selected="Nowe spodnie" 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"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikcja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych spodni. - </text> - <text name="Item Action Label"> - Spodnie: - </text> - </panel> - <panel label="Buty" name="Shoes"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adwanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowe Buty" label_selected="Nowe Buty" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych butów. - </text> - <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 aby wybrać kolor"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowe Skarpety" label_selected="Nowe Skarpety" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych skarpet. - </text> - <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 aby wybrać kolor"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowa Kurtka" label_selected="Nowa Kurtka" name="Create New"/> - <text name="no modify instructions"> - 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 aby wybrać kolor" width="76"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowe RÄ™kawiczki" label_selected="Nowe RÄ™kawiczki" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tych rÄ™kawiczek - </text> - <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 aby wybrać kolor"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowy Podkoszulek" label_selected="Nowy Podkoszulek" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tego podkoszulka. - </text> - <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 aby wybrać kolor"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowa Bielizna" label_selected="Nowa Bielizna" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tej bielizny. - </text> - <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 aby wybrać kolor"/> - <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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: modyfikacja zabroniona - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: niezaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - 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. - </text> - <button label="Nowa Spódnica" label_selected="Nowa Spódnica" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz prawa do modyfikowania tej spódnicy. - </text> - <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 aby wybrać kolor"/> - <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="Tatuaż" name="Tattoo"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: nie można modyfikować - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: nienaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - Załóż nowy tatuaż poprzez przeciÄ…gniÄ™cie go ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asny tatuaż z plików roboczych. - </text> - <button label="Utwórz Nowy Tatuaż" label_selected="Stwórz Nowy Tatuaż" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz uprawnieÅ„ do modyfikowania tych ubraÅ„/części ciaÅ‚a. - </text> - <text name="Item Action Label"> - Tatuaż: - </text> - <texture_picker label="Tatuaż gÅ‚owy" name="Head Tattoo" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Górny tatuaż" name="Upper Tattoo" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Tatuaż dolnej części ciaÅ‚a" name="Lower Tattoo" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <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="Alpha" name="Alpha"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: nie można modyfikować - </text> - <text name="title_loading"> - [DESC]: Å‚adowanie... - </text> - <text name="title_not_worn"> - [DESC]: nienaÅ‚ożone - </text> - <text name="path"> - Zapisane w [PATH] - </text> - <text name="not worn instructions"> - Załóż nowÄ… maskÄ™ alpha poprzez przeciÄ…gniÄ™cie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć wÅ‚asnÄ… z plików roboczych. - </text> - <button label="Stwórz nowÄ… Alpha" label_selected="Utwórz nowÄ… Alpha" name="Create New"/> - <text name="no modify instructions"> - Nie posiadasz uprawnieÅ„ do modyfikowania tych ubraÅ„/części ciaÅ‚a. - </text> - <text name="Item Action Label"> - Alpha: - </text> - <texture_picker label="Dolna Alpha" name="Lower Alpha" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Alpha górnej części ciaÅ‚a" name="Upper Alpha" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Alpha gÅ‚owy" name="Head Alpha" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Alpha oka" name="Eye Alpha" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <texture_picker label="Alpha wÅ‚osów" name="Hair Alpha" tool_tip="Kliknij aby wybrać teksturÄ™"/> - <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="Info o skrypcie" label_selected="Info o skrypcie" name="script_info" tool_tip="Pokaż skrypty przyÅ‚Ä…czone do Twojego awatara"/> - <button label="Stwórz ubranie" label_selected="Stwórz Ubranie" name="make_outfit_btn"/> - <button label="Anuluj" label_selected="Anuluj" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_device_settings.xml b/indra/newview/skins/default/xui/pl/floater_device_settings.xml deleted file mode 100644 index c485fb2e293ed9c445f81e41ab74f396bbf420d6..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="USTAWIENIA URZÄ„DZEŃ KOMUNIKACJI GÅOSOWEJ"/> diff --git a/indra/newview/skins/default/xui/pl/floater_im.xml b/indra/newview/skins/default/xui/pl/floater_im.xml deleted file mode 100644 index e40935ccb7bee20ba8c5c61e2bf957abeb5cad37..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Wiadomość (IM)"> - <string name="only_user_message"> - JesteÅ› jedynym uczestnikiem tej konferencji. - </string> - <string name="offline_message"> - [FIRST] [LAST] - ta osoba jest obecnie niedostÄ™pna. - </string> - <string name="invite_message"> - Kliknij na [BUTTON NAME] przycisk by zaakceptować/doÅ‚Ä…czyć do tej rozmowy. - </string> - <string name="muted_message"> - ZablokowaÅ‚eÅ› tego Rezydenta. WysÅ‚anie wiadomoÅ›ci automatycznie odblokuje go. - </string> - <string name="generic_request_error"> - BÅ‚Ä…d. Spróbuj ponownie za kilka minut. - </string> - <string name="insufficient_perms_error"> - Nie posiadasz praw do kontynuacji. - </string> - <string name="session_does_not_exist_error"> - Ta konferencja jest już zakoÅ„czona. - </string> - <string name="no_ability_error"> - Nie posiadesz tego przywileju. - </string> - <string name="not_a_mod_error"> - Nie jesteÅ› moderatorem konferencji. - </string> - <string name="muted_error"> - Moderator wyciszyÅ‚ CiÄ™. - </string> - <string name="add_session_event"> - Niemożliwość dodania Rezydentów do tej konferencji z [RECIPIENT]. - </string> - <string name="message_session_event"> - Nie można wysÅ‚ać Twojej wiadomoÅ›ci do sesji czatu z [RECIPIENT]. - </string> - <string name="removed_from_group"> - UsuniÄ™to CiÄ™ z grupy. - </string> - <string name="close_on_no_ability"> - Nie posiadasz praw by uczestniczyć w tej konferencji. - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/pl/floater_im_session.xml b/indra/newview/skins/default/xui/pl/floater_im_session.xml index db513f787cbb3ad108697ec9614e1217c290a6b2..9041ff7416c74d0d345f7f09a8aea3d7a2a0cb3c 100644 --- a/indra/newview/skins/default/xui/pl/floater_im_session.xml +++ b/indra/newview/skins/default/xui/pl/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="Panel kontroli wiadomoÅ›ci prywatnej (IM)" name="panel_im_control_panel"/> <layout_panel> <line_editor label="Do" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/pl/floater_map.xml b/indra/newview/skins/default/xui/pl/floater_map.xml index 4f1430623afaacf1772ae243b3873157947882a9..fd151e91adfc6fe371a19edc2f61538d3d9b0f45 100644 --- a/indra/newview/skins/default/xui/pl/floater_map.xml +++ b/indra/newview/skins/default/xui/pl/floater_map.xml @@ -1,28 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Map" title=""> - <floater.string name="mini_map_north"> - N - </floater.string> - <floater.string name="mini_map_east"> - E - </floater.string> - <floater.string name="mini_map_west"> - 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 name="ToolTipMsg"> + [REGION](Podwójne klikniÄ™cie otwiera MapÄ™, Shift i przeciÄ…gniÄ™cie kursorem zmienia skalÄ™) </floater.string> <floater.string name="mini_map_caption"> MINIMAPA diff --git a/indra/newview/skins/default/xui/pl/floater_my_friends.xml b/indra/newview/skins/default/xui/pl/floater_my_friends.xml deleted file mode 100644 index 847c93f8919beb2f0de0b638789a1e7c50e09f6b..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_my_friends" title="KONTAKTY"> - <tab_container name="friends_and_groups"> - <panel label="Znajomi" name="friends_panel"/> - <panel label="Grupy" name="groups_panel"/> - </tab_container> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml index e00b3188eaeabffc2a1e94f1494607d7e835f81f..7dc3e1f22ef6ae6136fa3e980f0d76abcd7f117e 100644 --- a/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pl/floater_nearby_chat.xml @@ -1,2 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="CZAT LOKALNY"/> +<floater name="nearby_chat" title="CZAT LOKALNY"> + <check_box label="TÅ‚umaczenie czatu (wspierane przez Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml deleted file mode 100644 index a8d2e10c5fbe9c42bd2e04316aabc8663edec62f..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_outfit_save_as.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Stwórz ubranie"> - <button label="Zapisz" label_selected="Zapisz" name="Save"/> - <button label="Anuluj" label_selected="Anuluj" name="Cancel"/> - <text name="Save item as:"> - Zapisz to co mam w tej chwili zaÅ‚ożone -jako nowy komplet ubrania: - </text> - <line_editor name="name ed"> - [DESC] (nowy) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml b/indra/newview/skins/default/xui/pl/floater_preview_classified.xml deleted file mode 100644 index d3d6588397f7702f3d47cdb1afb4612bf17c7b5e..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFO O REKLAMIE"> - <floater.string name="Title"> - Reklama: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_event.xml b/indra/newview/skins/default/xui/pl/floater_preview_event.xml deleted file mode 100644 index 5d9e47bc00500d851fca62b7e8b42cad8fc96b80..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="INFO O IMPREZIE"> - <floater.string name="Title"> - Impreza: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml deleted file mode 100644 index a041472f68f70d7dee899b0efc74e13863bc4795..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTURKI"/> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml deleted file mode 100644 index 9692fca9cd78e5ad7a166bb78e6ec6fc833b0cee..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTURKI"> - <text name="trigger_label"> - Czat: - </text> - <text name="key_label"> - Klawiatura: - </text> - <combo_box label="Å»aden" name="modifier_combo"/> - <combo_box label="Å»aden" name="key_combo"/> - <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Ä™"/> -</floater> diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml deleted file mode 100644 index a041472f68f70d7dee899b0efc74e13863bc4795..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="GESTURKI"/> diff --git a/indra/newview/skins/default/xui/pl/floater_statistics.xml b/indra/newview/skins/default/xui/pl/floater_statistics.xml deleted file mode 100644 index b7025e484d50a385427d8c9fdbe7b641d8ca549c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?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_tools.xml b/indra/newview/skins/default/xui/pl/floater_tools.xml index 817a72efd960177950afbc770b067163e5f24552..6efef4161e215495afe820cc3ae803f361a0cdfb 100644 --- a/indra/newview/skins/default/xui/pl/floater_tools.xml +++ b/indra/newview/skins/default/xui/pl/floater_tools.xml @@ -185,10 +185,10 @@ <text name="Group:"> Grupa: </text> - <button label="Ustaw..." label_selected="Ustaw..." name="button set group" tool_tip="Wybierz grupÄ™, która uzyska dostÄ™p do praw obiektu"/> <name_box initial_value="Åadowanie..." name="Group Name Proxy"/> - <button label="Przypisz" label_selected="Przypisz" name="button deed" tool_tip="Przypisanie oddaje prawa nastÄ™pnemu wÅ‚aÅ›cicielowi. Obiekty posiadane przez grupÄ™ mogÄ… zostać przypisane przez oficera grupy."/> + <button label="Ustaw..." label_selected="Ustaw..." name="button set group" tool_tip="Wybierz grupÄ™, która uzyska dostÄ™p do praw obiektu"/> <check_box label="UdostÄ™pnij" name="checkbox share with group" tool_tip="Pozwól czÅ‚onkom grupy na dzielenie praw do modyfikacji tego obiektu. Musisz przypisać obiekt aby uaktywnić ograniczenia dla ról."/> + <button label="Przypisz" label_selected="Przypisz" name="button deed" tool_tip="Przypisanie oddaje prawa nastÄ™pnemu wÅ‚aÅ›cicielowi. Obiekty posiadane przez grupÄ™ mogÄ… zostać przypisane przez oficera grupy."/> <text name="label click action"> Kliknij: </text> @@ -446,8 +446,9 @@ <combo_box.item label="Suction" name="suction"/> <combo_box.item label="Fali" name="weave"/> </combo_box> - <text name="tex scale"> - Powtórzenia + <check_box initial_value="nieprawda" label="PoÅ‚Ä…cz powierzchnie planarne" name="checkbox planar align" tool_tip="PoÅ‚Ä…cz tekstury na wszystkich wybranych powierzchniach z powierzchniÄ… wybranÄ… jako ostatnia. Wymaga planarnego mapowania tekstury."/> + <text name="rpt"> + Powtórzenia / Powierzchnia </text> <spinner label="Poziomo (U)" name="TexScaleU"/> <check_box label="Odwróć" name="checkbox flip s"/> diff --git a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml index c222e4edbbc078eebb95f3632b5f9cf82dad8838..80200cfb216c4ee5630a9736c0f76b0578629427 100644 --- a/indra/newview/skins/default/xui/pl/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/pl/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Mój awatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="ZakoÅ„cz rozmowÄ™" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="ZakoÅ„cz rozmowÄ™" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml deleted file mode 100644 index 925295102e405522690007628ceb4c1c67c4e606..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=""> - <button label="Zapisz" label_selected="Zapisz" name="Save"/> - <button label="Anuluj" label_selected="Anuluj" name="Cancel"/> - <text name="Save item as:"> - Zapisz obiekt w mojej Szafie jako: - </text> - <line_editor name="name ed"> - Nowe [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c572b4fc93e4081d4ea1d3d4a7fbd4bf4a50421 --- /dev/null +++ b/indra/newview/skins/default/xui/pl/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="PorzÄ…dkuj wedÅ‚ug daty" name="sort_by_most_recent"/> + <menu_item_check label="PorzÄ…dkuj wedÅ‚ug nazwy" name="sort_by_name"/> + <menu_item_check label="PorzÄ…dkuj wedÅ‚ug typu" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml index cdc01f286c114982ec2a577c32e2454d5045280b..c19b0a1c2e2aeeb08f1a14ddb473a93dfc5c7dc6 100644 --- a/indra/newview/skins/default/xui/pl/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_attachment_self.xml @@ -3,6 +3,7 @@ <menu_item_call label="Dotknij" name="Attachment Object Touch"/> <menu_item_call label="Edytuj" name="Edit..."/> <menu_item_call label="OdÅ‚Ä…cz" name="Detach"/> + <menu_item_call label="UsiÄ…dź tutaj" name="Sit Down Here"/> <menu_item_call label="WstaÅ„" name="Stand Up"/> <menu_item_call label="ZmieÅ„ strój" name="Change Outfit"/> <menu_item_call label="Edytuj mój strój" name="Edit Outfit"/> diff --git a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml index 1091eaa7fbca82ff78bf52dbb6ecb3ca7d063cac..ea151788c6b9e4df020ed80e708e73b64d30b44e 100644 --- a/indra/newview/skins/default/xui/pl/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pl/menu_avatar_self.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> + <menu_item_call label="UsiÄ…dź tu" name="Sit Down Here"/> <menu_item_call label="WstaÅ„" name="Stand Up"/> - <context_menu label="Zdejmij â–¶" name="Take Off >"> - <context_menu label="Ubrania â–¶" name="Clothes >"> + <context_menu label="Zdejmij" name="Take Off >"> + <context_menu label="Ubrania" name="Clothes >"> <menu_item_call label="KoszulÄ™" name="Shirt"/> <menu_item_call label="Spodnie" name="Pants"/> <menu_item_call label="SpódnicÄ™" name="Skirt"/> @@ -16,8 +17,8 @@ <menu_item_call label="Ubranie alpha" name="Self Alpha"/> <menu_item_call label="Wszystko" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="OdÅ‚Ä…cz â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="OdÅ‚Ä…cz" name="Object Detach"/> <menu_item_call label="OdÅ‚Ä…cz wszystko" name="Detach All"/> </context_menu> <menu_item_call label="ZmieÅ„ strój" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml index 2c56d2ca3d1cefc10d79e6e1def5f82f608e3134..c12bd490ff98485bcd41eae09577487f10c63798 100644 --- a/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_inspect_object_gear.xml @@ -9,6 +9,7 @@ <menu_item_call label="Otwórz" name="open"/> <menu_item_call label="Edytuj" name="edit"/> <menu_item_call label="Ubierz" name="wear"/> + <menu_item_call label="Dodaj" name="add"/> <menu_item_call label="Raport" name="report"/> <menu_item_call label="Zablokuj" name="block"/> <menu_item_call label="Przybliż" name="zoom_in"/> diff --git a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml index 6d6377dbc319abff4eaa89dc64243888db648e2e..90d71371e8311bcb915c5d1141c02c48d252b685 100644 --- a/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_inspect_self_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> + <menu_item_call label="UsiÄ…dź tutaj" name="sit_down_here"/> <menu_item_call label="WstaÅ„" name="stand_up"/> <menu_item_call label="ZmieÅ„ strój" name="change_outfit"/> <menu_item_call label="Mój profil" name="my_profile"/> diff --git a/indra/newview/skins/default/xui/pl/menu_mini_map.xml b/indra/newview/skins/default/xui/pl/menu_mini_map.xml index 94e4c91abb4026a62f6245f2b5f7598ca245d1ef..148adfba0d12883d1f24b24e31debfd8ba9a509d 100644 --- a/indra/newview/skins/default/xui/pl/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pl/menu_mini_map.xml @@ -4,6 +4,7 @@ <menu_item_call label="Zoom Å›rednio" name="Zoom Medium"/> <menu_item_call label="Zoom daleko" name="Zoom Far"/> <menu_item_check label="Obróć mapÄ™" name="Rotate Map"/> + <menu_item_check label="Autocentrowanie" name="Auto Center"/> <menu_item_call label="Zatrzymaj" name="Stop Tracking"/> <menu_item_call label="Mapa Åšwiata" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_object.xml b/indra/newview/skins/default/xui/pl/menu_object.xml index f25495e8e6b7b9203a943a6c2f14f9af0d9ac7b3..2173401dd26d2c6aeb061c809739af0d0b93405b 100644 --- a/indra/newview/skins/default/xui/pl/menu_object.xml +++ b/indra/newview/skins/default/xui/pl/menu_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> <menu_item_call label="Dotknij" name="Object Touch"> - <on_enable parameter="Dotknij" name="EnableTouch"/> + <menu_item_call.on_enable name="EnableTouch" parameter="Dotknij"/> </menu_item_call> <menu_item_call label="Edytuj" name="Edit..."/> <menu_item_call label="Buduj" name="Build"/> @@ -10,18 +10,18 @@ <menu_item_call label="WstaÅ„" name="Object Stand Up"/> <menu_item_call label="Sprawdź" name="Object Inspect"/> <menu_item_call label="Przybliż" name="Zoom In"/> - <context_menu label="Załóż na â–¶" name="Put On"> + <context_menu label="Załóż na" name="Put On"> <menu_item_call label="Załóż" name="Wear"/> - <context_menu label="DoÅ‚Ä…cz â–¶" name="Object Attach"/> - <context_menu label="DoÅ‚Ä…cz HUD â–¶" name="Object Attach HUD"/> + <menu_item_call label="Dodaj" name="Add"/> + <context_menu label="DoÅ‚Ä…cz" name="Object Attach"/> + <context_menu label="DoÅ‚Ä…cz HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="UsuÅ„ â–¶" name="Remove"> + <context_menu label="UsuÅ„" name="Remove"> <menu_item_call label="Raport" name="Report Abuse..."/> <menu_item_call label="Zablokuj" name="Object Mute"/> <menu_item_call label="Zwróć" name="Return..."/> <menu_item_call label="UsuÅ„" name="Delete"/> </context_menu> - <menu_item_call label="Kup" name="Pie Object Bye"/> <menu_item_call label="Weź" name="Pie Object Take"/> <menu_item_call label="Weź kopiÄ™" name="Take Copy"/> <menu_item_call label="ZapÅ‚ać" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/pl/menu_participant_list.xml b/indra/newview/skins/default/xui/pl/menu_participant_list.xml index fd6d4dcc3c456927dbfd1d204299a937e197eb5b..9e591027887e7654c2e7c3ea37c6aad2c10f3256 100644 --- a/indra/newview/skins/default/xui/pl/menu_participant_list.xml +++ b/indra/newview/skins/default/xui/pl/menu_participant_list.xml @@ -11,7 +11,7 @@ <menu_item_check label="PrzeglÄ…daj ikonki" name="View Icons"/> <menu_item_check label="Zablokuj gÅ‚os" name="Block/Unblock"/> <menu_item_check label="Zablokuj tekst" name="MuteText"/> - <context_menu label="Opcje Moderatora >" name="Moderator Options"> + <context_menu label="Opcje Moderatora" name="Moderator Options"> <menu_item_check label="Czat/IM dozwolony" name="AllowTextChat"/> <menu_item_call label="Wycisz tego uczestnika" name="ModerateVoiceMuteSelected"/> <menu_item_call label="Odblokuj wyciszenie tego uczestnika" name="ModerateVoiceUnMuteSelected"/> diff --git a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml index 9c33fad00f094313e3eece0726ac92f1ad3979a5..b62b85d30a4f8659e8afa4e6b8d1a5955f36c466 100644 --- a/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_friends_view_sort.xml @@ -3,5 +3,6 @@ <menu_item_check label="PorzÄ…dkuj wedÅ‚ug nazwy" name="sort_name"/> <menu_item_check label="PorzÄ…dkuj wedÅ‚ug statusu" name="sort_status"/> <menu_item_check label="WyÅ›wietlaj ikonki" name="view_icons"/> + <menu_item_check label="Zobacz udzielone prawa" name="view_permissions"/> <menu_item_call label="Pokaż zablokowanych Rezydentów & obiekty" name="show_blocked_list"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml index c924185c6fabde84b2ee6035bf38cb1f87dedf6c..dcfc48fb606418674cb003f172e16e5247d5964c 100644 --- a/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/pl/menu_people_nearby_multiselect.xml @@ -6,4 +6,5 @@ <menu_item_call label="ZadzwoÅ„" name="Call"/> <menu_item_call label="UdostÄ™pnij" name="Share"/> <menu_item_call label="ZapÅ‚ać" name="Pay"/> + <menu_item_call label="Teleportuj" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml index a71961ada79c5af249e4ddd00a4af3685fd1e895..2210b1e483c2dfa0e3770cb32c2e97eea72c9659 100644 --- a/indra/newview/skins/default/xui/pl/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml @@ -92,7 +92,6 @@ <menu_item_call label="Wstrzymaj dziaÅ‚anie skryptów w selekcji" name="Set Scripts to Not Running"/> </menu> <menu label="Opcje" name="Options"> - <menu_item_call label="Ustaw domyÅ›lne pozwolenia Å‚adowania" name="perm prefs"/> <menu_item_check label="Pokaż zaawansowane pozwolenia" name="DebugPermissions"/> <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"/> @@ -119,7 +118,6 @@ <menu_item_call label="O [APP_NAME]" name="About Second Life"/> </menu> <menu label="Zaawansowane" name="Advanced"> - <menu_item_check label="Pokaż menu Zaawansowane" name="Show Advanced Menu"/> <menu_item_call label="Zatrzymaj wszystkie animacje" name="Stop Animating My Avatar"/> <menu_item_call label="Odswież wyÅ›wietlanie tekstur" name="Rebake Texture"/> <menu_item_call label="DomyÅ›lne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/> @@ -166,7 +164,6 @@ <menu_item_check label="MgÅ‚a" name="Fog"/> <menu_item_check label="Obiekty elastyczne" name="Flexible Objects"/> </menu> - <menu_item_check label="Uruchom wiele wÄ…tków" name="Run Multiple Threads"/> <menu_item_check label="Użyj plugin Read Thread" name="Use Plugin Read Thread"/> <menu_item_call label="Wyczyść bufor danych grupy" name="ClearGroupCache"/> <menu_item_check label="WygÅ‚adzanie ruchu myszki" name="Mouse Smoothing"/> @@ -175,7 +172,6 @@ <menu_item_check label="Szukaj" name="Search"/> <menu_item_call label="Zwolnij klawisze" name="Release Keys"/> <menu_item_call label="DomyÅ›lne ustawienia rozmiaru interfejsu" name="Set UI Size to Default"/> - <menu_item_check label="Pokaż menu Zaawansowane" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Biegnij" name="Always Run"/> <menu_item_check label="Zacznij latać" name="Fly"/> <menu_item_call label="Zamknij okno" name="Close Window"/> @@ -195,6 +191,7 @@ <menu_item_call label="Przybliż" name="Zoom In"/> <menu_item_call label="DomyÅ›lne przybliżenie" name="Zoom Default"/> <menu_item_call label="Oddal" name="Zoom Out"/> + <menu_item_check label="Pokaż menu Zaawansowane" name="Show Advanced Menu"/> </menu> <menu_item_call label="Pokaż ustawienia debugowania" name="Debug Settings"/> <menu_item_check label="Pokaż menu progresu" name="Debug Mode"/> @@ -237,9 +234,15 @@ <menu label="Renderowanie" name="Rendering"> <menu_item_check label="Osie" name="Axes"/> <menu_item_check label="Tryb obrazu szkieletowego" name="Wireframe"/> - <menu_item_check label="Globalne oÅ›wietlenie" name="Global Illumination"/> + <menu_item_check label="OÅ›wietlenie i cienie" name="Lighting and Shadows"/> + <menu_item_check label="Cienie SÅ‚oÅ„ca/Księżyca/Projektory" name="Shadows from Sun/Moon/Projectors"/> + <menu_item_check label="SSAO and wygÅ‚adzanie cienia" name="SSAO and Shadow Smoothing"/> + <menu_item_check label="Globalne oÅ›wietlenie (eksperymentalne)" name="Global Illumination"/> + <menu_item_check label="Automatyczne maski alpha (deferred)" name="Automatic Alpha Masks (deferred)"/> + <menu_item_check label="Automatyczne maski alpha (non-deferred)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Tekstury animacji" name="Animation Textures"/> <menu_item_check label="WyÅ‚Ä…cz tekstury" name="Disable Textures"/> + <menu_item_check label="Texture Atlas (experimental)" name="Texture Atlas"/> <menu_item_check label="Renderowania zaÅ‚Ä…czonego Å›wiatÅ‚a" name="Render Attached Lights"/> <menu_item_check label="Renderowanie zaÅ‚Ä…czonych czÄ…steczek" name="Render Attached Particles"/> <menu_item_check label="WyÅ›wietlaj obiekty odblaskowe" name="Hover Glow Objects"/> @@ -259,7 +262,8 @@ <menu_item_call label="Test przeglÄ…darki internetowej" name="Web Browser Test"/> <menu_item_call label="Drukuj zaznaczone informacje o obiekcie" name="Print Selected Object Info"/> <menu_item_call label="Statystyki pamiÄ™ci" name="Memory Stats"/> - <menu_item_check label="Kliknij podójnie by uruchomić auto-pilota" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Podwójne klikniÄ™cie - Auto-Pilot" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Podwójne klikniÄ™cie - Teleportuj" name="DoubleClick Teleport"/> <menu_item_check label="Debugowanie zdarzeÅ„ klikania" name="Debug Clicks"/> <menu_item_check label="Debugowanie zdarzeÅ„ myszy" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml index b32e4adc5cad7e3527e83bb9f12a8e9d8f7283fb..bf85246be84d8adcb589b0f4be3c14d597d79357 100644 --- a/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/pl/menu_wearable_list_item.xml @@ -5,10 +5,10 @@ <menu_item_call label="Dodaj" name="wear_add"/> <menu_item_call label="Zdejmij/OdÅ‚Ä…cz" name="take_off_or_detach"/> <menu_item_call label="OdÅ‚Ä…cz" name="detach"/> - <context_menu label="DoÅ‚Ä…cz do â–¶" name="wearable_attach_to"/> - <context_menu label="DoÅ‚Ä…cz do zaÅ‚Ä…czników HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="DoÅ‚Ä…cz do" name="wearable_attach_to"/> + <context_menu label="DoÅ‚Ä…cz do zaÅ‚Ä…czników HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Zdejmij" name="take_off"/> <menu_item_call label="Edytuj" name="edit"/> - <menu_item_call label="Profil obiekty" name="object_profile"/> + <menu_item_call label="Profil obiektu" name="object_profile"/> <menu_item_call label="Pokaż oryginalny" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml index 4930bd75403a4032dcd0eb9b37786775d85944a0..47cafdbd999efb8a5b318a54e0a148b04e633a96 100644 --- a/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/pl/menu_wearing_gear.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Gear Wearing"> <menu_item_call label="Edytuj strój" name="edit"/> + <menu_item_call label="Zdejmij" name="takeoff"/> </menu> diff --git a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml index 6ee55133fe0d1f8c6cb814ddfaf459108744e011..753143704320159934e6c540e4739625c20dc5af 100644 --- a/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/pl/menu_wearing_tab.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Wearing"> + <menu_item_call label="Zdejmij" name="take_off"/> + <menu_item_call label="OdÅ‚Ä…cz" name="detach"/> <menu_item_call label="Edytuj strój" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml index 7fcd7b5e04d5031827910dc3fde0ecdba83ca1ba..7fda575c2958dfdd7844130dd3de72c3b3f92684 100644 --- a/indra/newview/skins/default/xui/pl/notifications.xml +++ b/indra/newview/skins/default/xui/pl/notifications.xml @@ -67,7 +67,7 @@ Szczegóły bÅ‚Ä™du: BÅ‚Ä…d o nazwie '[_NAME]' nie zostaÅ‚ odnaleziony [MESSAGE] <usetemplate name="okcancelbuttons" notext="Anuluj" yestext="Tak"/> </notification> - <notification name="BadInstallation"> + <notification name="BadInstallation"> Podczas aktualizacji [APP_NAME] wystÄ…piÅ‚ bÅ‚Ä…d. ProszÄ™ odwiedzić stronÄ™ [http://get.secondlife.com pobierz najnowsza wersjÄ™] aby Å›ciÄ…gnąć ostatniÄ… wersjÄ™ klienta. <usetemplate name="okbutton" yestext="OK"/> </notification> @@ -1786,6 +1786,10 @@ Przenieść obiekty szafy? Na pewno chcesz skoÅ„czyć? <usetemplate ignoretext="Na pewno chcesz skoÅ„czyć?" name="okcancelignore" notext="Nie koÅ„cz" yestext="WyÅ‚Ä…cz"/> </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Potwierdź, że na pewno chcesz skasować obiekty" name="okcancelignore" notext="Cofnij" yestext="OK"/> + </notification> <notification name="HelpReportAbuseEmailLL"> Używaj tej opcji do zgÅ‚aszania nadużyć [http://secondlife.com/corporate/tos.php Warunków Umowy (Terms of Service)] i [http://secondlife.com/corporate/cs.php Standardów SpoÅ‚eczeÅ„stwa (Community Standards)]. @@ -2719,9 +2723,13 @@ ProszÄ™ sprawdź swojÄ… sieć i ustawienia firewall. ( [EXISTENCE] sekund w Second Life) Awatar '[NAME]' pozostaÅ‚ w peÅ‚ni zaÅ‚adowany. </notification> - <notification name="AvatarRezSelfBakeNotification"> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ( [EXISTENCE] sekund w Second Life ) +Zbakowane tekstury [RESOLUTION] dla '[BODYREGION]' zostaÅ‚y zaÅ‚adowane po[TIME] sekundach. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> ( [EXISTENCE] sekund w Second Life ) -You [ACTION] a [RESOLUTION] baked texture for '[BODYREGION]' after [TIME] seconds. +Zbakowane tekstury zostaÅ‚y lokalnie zaktualizowane [RESOLUTION] dla '[BODYREGION]' po [TIME] sekundach. </notification> <notification name="ConfirmLeaveCall"> Czy jestes pewien/pewna, że chcesz zakoÅ„czyć rozmowÄ™? diff --git a/indra/newview/skins/default/xui/pl/panel_audio_device.xml b/indra/newview/skins/default/xui/pl/panel_audio_device.xml deleted file mode 100644 index 9074296bd53bc268d690771956b28a727c82f160..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_audio_device.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="device_settings"> - <text name="Audio Devices"> - UrzÄ…dzenia audio - </text> - <text name="Input device (microphone):"> - UrzÄ…dzenia wejÅ›ciowe (mikrofon): - </text> - <text name="Output device (speakers):"> - UrzÄ…dzenia wyjÅ›ciowe (gÅ‚oÅ›niki): - </text> - <text name="Input level:"> - Poziom wejÅ›cia - </text> - <text_editor name="voice_intro_text1"> - Za pomocÄ… suwaka ustaw poziom gÅ‚oÅ›noÅ›ci Twojego mówienia dla innych Rezydentów. W celu przetestowania poziomu 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" /> - <text name="wait_text"> - ProszÄ™ poczekać - </text> - <string name="default_text"> - DomyÅ›lne - </string> -</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml index 917610d3e993e0bcb97e9a0a7bf234a1957fd795..1ab95eec0023f815ddbc3bf17f200ee8d9752cd5 100644 --- a/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/pl/panel_avatar_list_item.xml @@ -22,5 +22,9 @@ [COUNT]lat </string> <text name="avatar_name" value="Nieznane"/> + <icon name="permission_edit_theirs_icon" tool_tip="Możesz edytować obiekty tego Znajomego"/> + <icon name="permission_edit_mine_icon" tool_tip="Ten Znajomy może edytować, kasować lub wziąć Twoje obiekty"/> + <icon name="permission_map_icon" tool_tip="Ten Znajomy może zlokalizować Ciebie na mapie"/> + <icon name="permission_online_icon" tool_tip="Ten Znajomy widzi Ciebie kiedy jesteÅ› obecny/obecna w SL"/> <button name="profile_btn" tool_tip="Zobacz profil"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml index a0f4eb5244efaf05ede7a7e5e361086c658c3b36..8a033fc32fb1809efb43cedf9dff5d94ef27f97e 100644 --- a/indra/newview/skins/default/xui/pl/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/pl/panel_bottomtray.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> <string name="SpeakBtnToolTip" value="WÅ‚Ä…cza/wyÅ‚Ä…cza mikrofon"/> <string name="VoiceControlBtnToolTip" value="Pokazuje/Ukrywa panel kontroli gÅ‚osu"/> <layout_stack name="toolbar_stack"> @@ -12,28 +13,25 @@ <gesture_combo_list label="Gesturki" name="Gesture" tool_tip="Pokazuje/Ukrywa gesturki"/> </layout_panel> <layout_panel name="movement_panel"> - <button label="Ruch" name="movement_btn" tool_tip="Pokaż/Ukryj ustawienia ruchu"/> + <bottomtray_button label="Ruch" name="movement_btn" tool_tip="Pokaż/Ukryj ustawienia ruchu"/> </layout_panel> <layout_panel name="cam_panel"> - <button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj ustawienia kamery"/> + <bottomtray_button label="Widok" name="camera_btn" tool_tip="Pokaż/Ukryj ustawienia kamery"/> </layout_panel> <layout_panel name="snapshot_panel"> - <button label="" name="snapshots" tool_tip="Zrób zdjÄ™cie"/> - </layout_panel> - <layout_panel name="sidebar_btn_panel"> - <button label="Schowek" name="sidebar_btn" tool_tip="Pokazuje/ukrywa schowek"/> + <bottomtray_button label="" name="snapshots" tool_tip="Zrób zdjÄ™cie"/> </layout_panel> <layout_panel name="build_btn_panel"> - <button label="Buduj" name="build_btn" tool_tip="Pokazuje/ukrywa narzÄ™dzia budowania"/> + <bottomtray_button label="Buduj" name="build_btn" tool_tip="Pokazuje/ukrywa narzÄ™dzia budowania"/> </layout_panel> <layout_panel name="search_btn_panel"> - <button label="Szukaj" name="search_btn" tool_tip="Pokazuje/ukrywa Szukaj"/> + <bottomtray_button label="Szukaj" name="search_btn" tool_tip="Pokazuje/ukrywa Szukaj"/> </layout_panel> <layout_panel name="world_map_btn_panel"> - <button label="Mapa" name="world_map_btn" tool_tip="Pokazuje/ukrywa MapÄ™ Åšwiata"/> + <bottomtray_button label="Mapa" name="world_map_btn" tool_tip="Pokazuje/ukrywa MapÄ™ Åšwiata"/> </layout_panel> <layout_panel name="mini_map_btn_panel"> - <button label="Mini-Mapa" name="mini_map_btn" tool_tip="Pokazuje/ukrywa Mini-MapÄ™"/> + <bottomtray_button label="Mini-Mapa" name="mini_map_btn" tool_tip="Pokazuje/ukrywa Mini-MapÄ™"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/default/xui/pl/panel_classified_info.xml b/indra/newview/skins/default/xui/pl/panel_classified_info.xml index 0b275d6dcf2855c178414da10abd391058dbb35e..52f54fc7cf730322c69c7c3fbae5b0c1e15511b2 100644 --- a/indra/newview/skins/default/xui/pl/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/pl/panel_classified_info.xml @@ -46,8 +46,16 @@ </panel> </scroll_container> <panel name="buttons"> - <button label="Teleportuj" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Edytuj" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleportuj" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Edytuj" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml index 07f9b3a13f99f8a74de3d6a27e6db4b5bb4c43cb..7cfd9c221c3b23882d13464fa5aeb07c9c03bfa9 100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_classified.xml @@ -36,13 +36,19 @@ <icons_combo_box.item label="Treść Moderate" name="mature_ci" value="Mature"/> <icons_combo_box.item label="Treść General" name="pg_ci" value="PG"/> </icons_combo_box> + <check_box label="Ponawiaj automatycznie co tydzieÅ„." name="auto_renew"/> <text name="price_for_listing_label" value="Cena za wyÅ›wietlenie:"/> <spinner label="L$" name="price_for_listing" tool_tip="Cena za umieszczenie reklamy." value="50"/> - <check_box label="Ponawiaj automatycznie co tydzieÅ„." name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="[LABEL]" name="save_changes_btn"/> - <button label="Anuluj" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="[LABEL]" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cofnij" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml index 22fb00671d4703164401b43c3c0ca70673da4493..8a183c00cfd3e012dfb46ef2b6c5d0435793f95f 100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml @@ -25,7 +25,13 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Zapisz obrazek" name="save_changes_btn"/> - <button label="Anuluj" name="cancel_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Zapisz obrazek" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="layout_panel1"> + <button label="Cofnij" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml index c9790f5eba41dc39d06d96cce2530876542ff892..fdc691cbb98ed3c5a1b949bffb96842e2439433c 100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_profile.xml @@ -34,18 +34,24 @@ </text> <check_box label="Pokaż w wyszukiwarce" name="show_in_search_checkbox"/> <text name="title_acc_status_text" value="Moje konto:"/> + <text_editor name="acc_status_text" value="Rezydent. Brak danych konta."/> <text name="my_account_link" value="[[URL] idź do dashboard]"/> - <text name="acc_status_text" value="Rezydent. Brak danych konta."/> <text name="title_partner_text" value="Partner:"/> - <text name="partner_edit_link" value="[[URL] Edytuj]"/> <panel name="partner_data_panel"> - <text initial_value="(wyszukiwanie)" name="partner_text" value="[FIRST] [LAST]"/> + <name_box initial_value="(wyszukiwanie)" name="partner_text" value="[FIRST] [LAST]"/> </panel> + <text name="partner_edit_link" value="[[URL] Edytuj]"/> </panel> </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Zapisz zmiany" name="save_btn"/> - <button label="Anuluj" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="Zapisz zmiany" name="save_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cofnij" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml index da2c26f02b799a1be0df6853609d5fac0f2c21e9..d1157b910d66809b8e2b14eb6407e624f6143d9d 100644 --- a/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pl/panel_edit_wearable.xml @@ -102,7 +102,13 @@ <icon name="female_icon" tool_tip="Kobieta"/> </panel> <panel name="button_panel"> - <button label="Zapisz" name="save_as_button"/> - <button label="Cofnij zmiany" name="revert_button"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="save_as_btn_lp"> + <button label="Zapisz jako" name="save_as_button"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Cofnij zmiany" name="revert_button"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_friends.xml b/indra/newview/skins/default/xui/pl/panel_friends.xml deleted file mode 100644 index 9d8dc69a3511bb0cde91014dc67682d1b468ff0d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Znajomi - </string> - <scroll_list name="friend_list" tool_tip="Aby wybrać wielu znajomych za jednym razem przetrzymaj klawisz Shift lub Control"> - <column name="icon_online_status" tool_tip="Status dostÄ™pnoÅ›ci"/> - <column label="ImiÄ™" name="friend_name" tool_tip="ImiÄ™"/> - <column name="icon_visible_online" tool_tip="Ta osoba może widzieć czy jesteÅ› w Second Life"/> - <column name="icon_visible_map" tool_tip="Ta osoba może zlokalizować Ciebie na mapie"/> - <column name="icon_edit_mine" 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"/> - <button label="Profil" name="profile_btn" tool_tip="Pokaż zdjÄ™cia, grupy i inne informacje"/> - <button label="Teleportuj" name="offer_teleport_btn" tool_tip="Zaoferuj teleportacjÄ™ do siebie"/> - <button label="ZapÅ‚ać" name="pay_btn" tool_tip="ZapÅ‚ać L$ tej osobie"/> - <button label="UsuÅ„" name="remove_btn" tool_tip="UsuÅ„ tÄ™ osobÄ™ z listy znajomych"/> - <button label="Dodaj" name="add_btn" tool_tip="Zaoferuj znajomość"/> -</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml index e637588cf0bc6eabdc12a4030c8ad595a9af8f36..37fb529f2bac303de3b212d95576bb3b0f27f45e 100644 --- a/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/pl/panel_group_info_sidetray.xml @@ -13,7 +13,7 @@ Darmowe </panel.string> <panel name="group_info_top"> - <text name="group_name" value="(Åadowanie...)"/> + <text_editor name="group_name" value="(Åadowanie...)"/> <line_editor label="Wpisz nazwÄ™ swojej nowej grupy tutaj" name="group_name_editor"/> </panel> <layout_stack name="layout"> @@ -25,11 +25,17 @@ <accordion_tab name="group_land_tab" title="Posiadlość/MajÄ…tek"/> </accordion> </layout_panel> - <layout_panel name="button_row"> + </layout_stack> + <layout_stack name="button_row_ls"> + <layout_panel name="btn_chat_lp"> <button label="Czat" name="btn_chat"/> - <button label="Konferencja gÅ‚osowa" name="btn_call" tool_tip="Konferencja gÅ‚osowa"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Konferencja gÅ‚osowa w grupie" name="btn_call" tool_tip="Rozpocznij konferencjÄ™ gÅ‚osowÄ… w tej grupie"/> + </layout_panel> + <layout_panel name="btn_apply_lp"> <button label="Zapisz" label_selected="Zapisz" name="btn_apply"/> - <button label="Stwórz nowÄ… grupÄ™" name="btn_create" tool_tip="Stwórz nowÄ… grupÄ™"/> + <button label="Stwórz grupÄ™" name="btn_create" tool_tip="Stwórz nowÄ… grupÄ™"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_groups.xml b/indra/newview/skins/default/xui/pl/panel_groups.xml deleted file mode 100644 index 671d8fd2f020af970c230c096856876690d08f7a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_groups.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel name="groups"> - <scroll_list name="group list"> - <column label="" name="name" /> - </scroll_list> - <text name="groupdesc"> - Twoja aktywna grupa jest pogrubiona. - </text> - <text name="groupcount"> - Należysz do [COUNT] grup (maksimum to [MAX]). - </text> - <button label="Czat/IM" name="IM" tool_tip="Rozpocznij sesjÄ™ czatu (IM)" /> - <button label="O grupie" name="Info" /> - <button label="Wybierz" name="Activate" /> - <button label="Opuść" name="Leave" /> - <button label="Stwórz..." name="Create" /> - <button label="Szukaj..." name="Search..." /> -</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_landmarks.xml b/indra/newview/skins/default/xui/pl/panel_landmarks.xml index dcc495b5a814ea5539879563dbfac49105d552e7..039be3b504ebcfdeadf7a7e9928a3b212b513fd6 100644 --- a/indra/newview/skins/default/xui/pl/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/pl/panel_landmarks.xml @@ -7,8 +7,16 @@ <accordion_tab name="tab_library" title="Biblioteka"/> </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Pokaż dodatkowe opcje"/> - <button name="add_btn" tool_tip="Dodaj nowy landmark"/> - <dnd_button name="trash_btn" tool_tip="UsuÅ„ zaznaczony landmark"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Pokaż opcje dodatkowe"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Dodaj nowy landmark"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="UsuÅ„ wybrany landmark"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_my_profile.xml b/indra/newview/skins/default/xui/pl/panel_my_profile.xml index fefab15af06a8da0dfe8c6293208c8ba4ef987b5..6b0ba44bb49b583eb9349a4c4668ab00c2e6b946 100644 --- a/indra/newview/skins/default/xui/pl/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_my_profile.xml @@ -27,9 +27,8 @@ </panel> </scroll_container> </layout_panel> - <layout_panel name="profile_me_buttons_panel"> - <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/> - <button label="Edytuj wyglÄ…d" name="edit_appearance_btn" tool_tip="Stwórz/edytuj swój wyglÄ…d: dane fizyczne, ubrania itp."/> - </layout_panel> </layout_stack> + <panel name="profile_me_buttons_panel"> + <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj informacje o sobie"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pl/panel_nearby_chat.xml deleted file mode 100644 index bcecaeabb3812f815c33d4bcd7da304f4207e508..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - CZAT LOKALNY - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/pl/panel_notes.xml b/indra/newview/skins/default/xui/pl/panel_notes.xml index 35cb7e1bce5f23fbd72ca178fa25bf99b4b33824..571171d64c73f4a9eff1bda49fe5069b63410c39 100644 --- a/indra/newview/skins/default/xui/pl/panel_notes.xml +++ b/indra/newview/skins/default/xui/pl/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Notatki & Prywatność" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Notatki:"/> @@ -11,13 +11,25 @@ <check_box label="Edytowanie, kasowanie lub zabieranie moich obiektów" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Dodaj do znajomych" name="add_friend" tool_tip="Zaoferuj znajomość Rezydentowi"/> - <button label="IM" name="im" tool_tip="Otwórz wiadomoÅ›ci IM"/> - <button label="DzwoÅ„" name="call" tool_tip="ZadzwoÅ„ do Rezydenta"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż Rezydenta na mapie"/> - <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Dodaj do Znajomych" name="add_friend" tool_tip="Zaoferuj znajomość Rezydentowi"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="IM" name="im" tool_tip="Otwórz wiadomoÅ›ci IM"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="DzwoÅ„" name="call" tool_tip="ZadzwoÅ„ do Rezydenta"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż Rezydenta na mapie"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_online_status.xml b/indra/newview/skins/default/xui/pl/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml index 31502cccba5e6a1c3ccb92a371b6c6fa93a41c68..50353d4fba66771e8e04d0dc29dbc3717afbe390 100644 --- a/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfit_edit.xml @@ -45,7 +45,13 @@ <button name="shop_btn_2" tool_tip="Odwiedź stronÄ™ SL Marketplace. Możesz również zaznaczyć rzecz, którÄ… masz na sobie a nastÄ™pnie kliknąć tutaj aby zobaczyć wiÄ™cej rzeczy tego rodzaju."/> </panel> <panel name="save_revert_button_bar"> - <button label="Zapisz" name="save_btn"/> - <button label="Cofnij zmiany" name="revert_btn" tool_tip="Cofnij do ostatniej zapisanej wersji"/> + <layout_stack name="button_bar_ls"> + <layout_panel name="save_btn_lp"> + <button label="Zapisz" name="save_btn"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Cofnij zmiany" name="revert_btn" tool_tip="Przywróć ostatniÄ… zapisanÄ… wersjÄ™"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml index 2d2ada25e813b4d71912ffa3faf15532cdd5f1cf..bf23ace58f41fcce721c5692335b69b5bc021a72 100644 --- a/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pl/panel_outfits_inventory.xml @@ -11,7 +11,13 @@ <panel label="ZAÅOÅ»ONE" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> - <button label="Zapisz jako" name="save_btn"/> - <button label="Ubierz" name="wear_btn" tool_tip="Ubierz wybrany obiekt"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_btn_lp"> + <button label="Zapisz jako" name="save_btn"/> + </layout_panel> + <layout_panel name="wear_btn_lp"> + <button label="Załóż" name="wear_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml index 19df36c9ee9ae84886dd00dbc5fdd01e439f2163..fcb6b196350588dcc8f2ba4d6b4da9315d058624 100644 --- a/indra/newview/skins/default/xui/pl/panel_people.xml +++ b/indra/newview/skins/default/xui/pl/panel_people.xml @@ -32,9 +32,17 @@ Chcesz spotkać ludzi? Spróbuj [secondlife:///app/worldmap Mapa Åšwiata]. <accordion_tab name="tab_all" title="Wszyscy"/> </accordion> <panel label="bottom_panel" name="bottom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opcje"/> - <button name="add_btn" tool_tip="Zaproponuj znajomość"/> - <button name="del_btn" tool_tip="UsuÅ„ wybranÄ… osobÄ™ ze swojej listy znajomych"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="friends_viewsort_btn" tool_tip="Pokaż opcje dodatkowe"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Dodaj wybranego Rezydenta do znajomych"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="UsuÅ„ wybranÄ… osobÄ™ ze swojej listy znajomych"/> + </layout_panel> + </layout_stack> </panel> </panel> <panel label="GRUPY" name="groups_panel"> @@ -52,13 +60,33 @@ Chcesz spotkać ludzi? Spróbuj [secondlife:///app/worldmap Mapa Åšwiata]. </panel> </tab_container> <panel name="button_bar"> - <button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjÄ™cie, grupy i inne informacje o Rezydencie" width="55"/> - <button label="IM" name="im_btn" tool_tip="Rozpocznij rozmowÄ™ prywatnÄ… (IM)" width="35"/> - <button label="ZadzwoÅ„" name="call_btn" tool_tip="ZadzwoÅ„ do tego Rezydenta" width="62"/> - <button label="Podziel siÄ™" name="share_btn" tool_tip="UdostÄ™pnij obiekt z Szafy" width="72"/> - <button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleportacjÄ™" width="70"/> - <button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie" width="69"/> - <button label="Konferencja Grupowa" name="chat_btn" tool_tip="Rozpocznij konferencÄ™" width="124"/> - <button label="Rozmowa GÅ‚osowa" name="group_call_btn" tool_tip="Rozmowa gÅ‚osowa w tej grupie" width="108"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjÄ™cie, grupy i inne informacje o Rezydencie"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="IM" name="im_btn" tool_tip="Otwórz wiadomoÅ›ci IM"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="DzwoÅ„" name="call_btn" tool_tip="ZadzwoÅ„ do tego Rezydenta"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="UdostÄ™pnij" name="share_btn" tool_tip="UdostÄ™pnij obiekt z Szafy"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Profil grupy" name="group_info_btn" tool_tip="Pokaż informacje o grupie"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Czat grupy" name="chat_btn" tool_tip="Otwórz sesjÄ™ czatu"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Rozmowa gÅ‚osowa w grupie" name="group_call_btn" tool_tip="Rozmowa gÅ‚osowa w tej grupie"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_pick_info.xml b/indra/newview/skins/default/xui/pl/panel_pick_info.xml index 0454ecc430fb5ebfb568dc4d5583a5583de7c9de..26afded7958a8f2f48362a2b315a6d69e1127208 100644 --- a/indra/newview/skins/default/xui/pl/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/pl/panel_pick_info.xml @@ -3,14 +3,22 @@ <text name="title" value="Info o Ulubionych"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <text name="pick_name" value="[name]"/> - <text name="pick_location" value="[loading...]"/> - <text name="pick_desc" value="[description]"/> + <text_editor name="pick_name" value="[name]"/> + <text_editor name="pick_location" value="[loading...]"/> + <text_editor name="pick_desc" value="[description]"/> </panel> </scroll_container> <panel name="buttons"> - <button label="Teleportuj" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Edytuj" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teleportuj" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Edytuj" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_picks.xml b/indra/newview/skins/default/xui/pl/panel_picks.xml index 5d69c25ff3780e723ee3476df20dd3a09236c3e8..1ba4e761966b7714c3563d3bab5e589ac24fa8db 100644 --- a/indra/newview/skins/default/xui/pl/panel_picks.xml +++ b/indra/newview/skins/default/xui/pl/panel_picks.xml @@ -2,19 +2,28 @@ <panel label="Ulubione" name="panel_picks"> <string name="no_picks" value="Brak Ulubionych"/> <string name="no_classifieds" value="Brak Reklam"/> - <text name="empty_picks_panel_text"> - Brak ulubionych/reklam w tym miejscu - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Ulubione"/> <accordion_tab name="tab_classifieds" title="Reklamy"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Stwórz w obecnym miejscu nowÄ… zakÅ‚adkÄ™ w ulubionych lub reklamÄ™"/> + <layout_stack name="edit_panel_ls"> + <layout_panel name="gear_menu_btn"> + <button name="new_btn" tool_tip="Stwórz w obecnym miejscu nowÄ… zakÅ‚adkÄ™ w ulubionych lub reklamÄ™"/> + </layout_panel> + </layout_stack> </panel> <panel name="buttons_cucks"> - <button label="Info" name="info_btn" tool_tip="Pokaż info o ulubionych"/> - <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj do odpowiadajÄ…cego miejsca"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż odpowiadajÄ…ce miejsce w Mapie Åšwiata"/> + <layout_stack name="buttons_cucks_ls"> + <layout_panel name="info_btn_lp"> + <button label="Informacja" name="info_btn" tool_tip="Pokaż informacjÄ™ o ulubionych"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj do odpowiadajÄ…cego obszaru"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż odpowiadajÄ…cy obszar na Mapie Åšwiata"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml index 23f724317eb91c72ea358b3c4de21d32852f5a1f..e0a0cfd96a35c8861ba9712948ce582b273bc30c 100644 --- a/indra/newview/skins/default/xui/pl/panel_places.xml +++ b/indra/newview/skins/default/xui/pl/panel_places.xml @@ -4,13 +4,45 @@ <string name="teleport_history_tab_title" value="HISTORIA TELEPORTÓW"/> <filter_editor label="Filtruj Moje Miejsca" name="Filter"/> <panel name="button_panel"> - <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj do wybranego miejsca"/> - <button label="Mapa" name="map_btn" tool_tip="Pokaż miejsce na Mapie Åšwiata"/> - <button label="Edytuj" name="edit_btn" tool_tip="Edytuj informacje landmarka"/> - <button label="â–¼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/> - <button label="Zapisz" name="save_btn"/> - <button label="Anuluj" name="cancel_btn"/> - <button label="Zamknij" name="close_btn"/> - <button label="Profil" name="profile_btn" tool_tip="Pokaż opis miejsca"/> + <layout_stack name="bottom_bar_ls0"> + <layout_panel name="lp1"> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="teleport_btn_lp"> + <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj siÄ™ w wybrane miejsce"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Mapa" name="map_btn" tool_tip="Pokaż odpowiadajÄ…ce miejsce na Mapie Åšwiata"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="lp2"> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="edit_btn_lp"> + <button label="Edytuj" name="edit_btn" tool_tip="Edytuj informacje landmarka"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="profile_btn_lp"> + <button label="Profil" name="profile_btn" tool_tip="Pokaż profil miejsca"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_close_ls3"> + <layout_panel name="close_btn_lp"> + <button label="Zamknij" name="close_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls2"> + <layout_panel name="save_btn_lp"> + <button label="Zapisz" name="save_btn"/> + </layout_panel> + <layout_panel name="cancel_btn_lp"> + <button label="Cofnij" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> 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 e980d71ce44423cc18a7fef49822285f5e24b385..87894bb35808bdbddc3c4b1f01f99c77d8ab29c5 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_chat.xml @@ -56,27 +56,27 @@ <radio_item label="Osobne okna" name="radio" value="0"/> <radio_item label="Etykiety" name="radio2" value="1"/> </radio_group> - <check_box label="PrzetÅ‚umacz Czat" name="translate_chat_checkbox" /> + <check_box label="Używaj translatora podczas rozmowy (wspierany przez Google)" name="translate_chat_checkbox"/> <text name="translate_language_text"> - Czat JÄ™zyk: + PrzetÅ‚umacz czat na: </text> <combo_box name="translate_language_combobox"> - <combo_box.item name="System Default Language" label="DomyÅ›lny" /> - <combo_box.item name="English" label="English (Angielski)" /> - <combo_box.item name="Danish" label="Dansk (DuÅ„ski)" /> - <combo_box.item name="German" label="Deutsch (Niemiecki)" /> - <combo_box.item name="Spanish" label="Español (HiszpaÅ„ski)" /> - <combo_box.item name="French" label="Français (Francuski)" /> - <combo_box.item name="Italian" label="Italiano (WÅ‚oski)" /> - <combo_box.item name="Hungarian" label="Magyar (WÄ™gierski)" /> - <combo_box.item name="Dutch" label="Nederlands (Niderlandzki)" /> - <combo_box.item name="Polish" label="Polski" /> - <combo_box.item name="Portugese" label="Português (Portugalski)" /> - <combo_box.item name="Russian" label="РуÑÑкий (Rosyjski)" /> - <combo_box.item name="Turkish" label="Türkçe (Turecki)" /> - <combo_box.item name="Ukrainian" label="УкраїнÑька (UkraiÅ„ski)" /> - <combo_box.item name="Chinese" label="ä¸æ–‡ (简体) (ChiÅ„ski)" /> - <combo_box.item name="Japanese" label="日本語 (JapoÅ„ski)" /> - <combo_box.item name="Korean" label="í•œêµì–´ (KoreaÅ„ski)" /> + <combo_box.item label="DomyÅ›lny" name="System Default Language"/> + <combo_box.item label="English (Angielski)" name="English"/> + <combo_box.item label="Dansk (DuÅ„ski)" name="Danish"/> + <combo_box.item label="Deutsch (Niemiecki)" name="German"/> + <combo_box.item label="Español (HiszpaÅ„ski)" name="Spanish"/> + <combo_box.item label="Français (Francuski)" name="French"/> + <combo_box.item label="Italiano (WÅ‚oski)" name="Italian"/> + <combo_box.item label="Magyar (WÄ™gierski)" name="Hungarian"/> + <combo_box.item label="Nederlands (Holenderski)" name="Dutch"/> + <combo_box.item label="Polski" name="Polish"/> + <combo_box.item label="Português (Portugalski)" name="Portugese"/> + <combo_box.item label="РуÑÑкий (Rosyjski)" name="Russian"/> + <combo_box.item label="Türkçe (Turecki)" name="Turkish"/> + <combo_box.item label="УкраїнÑька (UkraiÅ„ski)" name="Ukrainian"/> + <combo_box.item label="ä¸æ–‡ (简体) (ChiÅ„ski)" name="Chinese"/> + <combo_box.item label="日本語 (JapoÅ„ski)" name="Japanese"/> + <combo_box.item label="í•œêµì–´ (KoreaÅ„ski)" name="Korean"/> </combo_box> </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 e60d540066d09f4797fa24079a0611670766b714..1a9f59bbffb65699b052522064eca815a7cd37e3 100644 --- a/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pl/panel_preferences_graphics1.xml @@ -29,22 +29,16 @@ <check_box initial_value="true" label="Mapowanie wypukÅ‚oÅ›ci i poÅ‚ysk" name="BumpShiny"/> <check_box initial_value="true" label="Podstawowe shadery" name="BasicShaders" tool_tip="WyÅ‚Ä…czenie tej opcji może naprawić bÅ‚Ä™dy niektórych sterowników graficznych."/> <check_box initial_value="true" label="Shadery atmosfery" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Refleksy w wodzie" name="Reflections"/> - <text name="ReflectionDetailText"> - Ustawienia refleksów: + <text name="reflection_label"> + Refleksy w wodzie: </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item label="Teren i drzewa" name="0"/> - <radio_item label="Obiekty statyczne" name="1"/> - <radio_item label="Awatary i obiekty" name="2"/> - <radio_item label="Wszystko" name="3"/> - </radio_group> - <text name="AvatarRenderingText"> - Rendering awatarów - </text> - <check_box initial_value="true" label="Impostoryzacja awatarowa" name="AvatarImpostors"/> - <check_box initial_value="true" label="Rendering awatara przez GPU" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="Oddzielne warstwy ubraÅ„" name="AvatarCloth"/> + <combo_box initial_value="true" label="Refleksy w wodzie" name="Reflections"> + <combo_box.item label="MaÅ‚o" name="0"/> + <combo_box.item label="Teren i drzewa" name="1"/> + <combo_box.item label="Obiekty statyczne" name="2"/> + <combo_box.item label="Awatary i obiekty" name="3"/> + <combo_box.item label="Wszystko" name="4"/> + </combo_box> <slider label="Pole widzenia:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -82,13 +76,12 @@ <text name="SkyMeshDetailText"> MaÅ‚o </text> - <text name="LightingDetailText"> - Ustawienia Å›wiateÅ‚: + <text name="AvatarRenderingText"> + Rendering awatarów </text> - <radio_group name="LightingDetailRadio"> - <radio_item label="Tylko SÅ‚oÅ„ce i Księżyc" name="SunMoon" value="0"/> - <radio_item label="Tylko bliskie Å›wiatÅ‚a" name="LocalLights" value="1"/> - </radio_group> + <check_box initial_value="true" label="Impostoryzacja awatarowa" name="AvatarImpostors"/> + <check_box initial_value="true" label="Rendering awatara przez GPU" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Oddzielne warstwy ubraÅ„" name="AvatarCloth"/> <text name="TerrainDetailText"> Szczegóły terenu: </text> @@ -96,6 +89,7 @@ <radio_item label="Niska" name="0"/> <radio_item label="Wysoka" name="2"/> </radio_group> + --> </panel> <button label="Zastosuj" label_selected="Zastosuj" name="Apply"/> <button label="Zresetuj" name="Defaults"/> diff --git a/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml index a1a9be92426fae8cf91d7d2afce49bc5662327c4..b5763e1291a0e7d73bf471865cc227d257c139f8 100644 --- a/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/pl/panel_prim_media_controls.xml @@ -13,9 +13,9 @@ 50 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Wczytywanie mediów"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/pl/panel_profile.xml b/indra/newview/skins/default/xui/pl/panel_profile.xml index 97c2fdd417b971810c42422906b7de0177133c11..f4a5699f8d54268a4d9a699ce06afa23f95d2e78 100644 --- a/indra/newview/skins/default/xui/pl/panel_profile.xml +++ b/indra/newview/skins/default/xui/pl/panel_profile.xml @@ -25,17 +25,29 @@ </panel> </scroll_container> </layout_panel> + </layout_stack> + <layout_stack name="layout_verb_buttons"> <layout_panel name="profile_buttons_panel"> - <button label="Poznaj" name="add_friend" tool_tip="Zaoferuj znajomość Rezydentowi"/> - <button label="IM" name="im" tool_tip="Rozpocznij sesjÄ™ czatu (IM)"/> - <button label="DzwoÅ„" name="call" tool_tip="ZadzwoÅ„"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Pokaż Rezydenta na mapie"/> - <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/> - <button label="â–¼" name="overflow_btn" tool_tip="ZapÅ‚ać lub udostÄ™pnij obiekty Rezydentowi"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Poznaj" name="add_friend" tool_tip="Zaproponuj znajomość Rezydentowi"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="IM" name="im" tool_tip="Otwórz wiadomoÅ›ci IM"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="DzwoÅ„" name="call" tool_tip="ZadzwoÅ„ do tego Rezydenta"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teleportuj" name="teleport" tool_tip="Teleportuj"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="ZapÅ‚ać lub udostÄ™pnij obiekt Rezydentowi"/> + </layout_panel> + </layout_stack> </layout_panel> <layout_panel name="profile_me_buttons_panel"> - <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj swoje dane"/> - <button label="Edytuj wyglÄ…d" name="edit_appearance_btn" tool_tip="Stwórz/edytuj swój wyglÄ…d: dane fizyczne, ubranie..."/> + <button label="Edytuj profil" name="edit_profile_btn" tool_tip="Edytuj informacje o sobie"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml b/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml deleted file mode 100644 index 84d7d7ab6290b0f7f30c0ee49fb2e51f22a6efa3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pl/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?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"> - nieznany - </text> - <text name="version_channel_text_lbl"> - Wersja: - </text> - <text name="version_channel_text"> - nieznany - </text> - <text name="region_type_lbl"> - Typ: - </text> - <text name="region_type"> - nieznany - </text> - <check_box label="Zablokuj zmiany terenu" name="block_terraform_check"/> - <check_box label="Zablokuj latanie" name="block_fly_check"/> - <check_box label="Uszkodzenia dozwolone" name="allow_damage_check"/> - <check_box label="Zablokuj popychanie" name="restrict_pushobject"/> - <check_box label="Odsprzedaż dozwolona" name="allow_land_resell_check"/> - <check_box label="ÅÄ…czenie/Dzielenie dozwolone" name="allow_parcel_changes_check"/> - <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"/> - <spinner label="Limit goÅ›ci" name="agent_limit_spin"/> - <spinner label="Ekstra obiekty" name="object_bonus_spin"/> - <text label="Restrykcje wieku" name="access_text"> - Rodzaj: - </text> - <combo_box label="Moderuj" name="access_combo"> - <combo_box.item label="Adult" name="Adult"/> - <combo_box.item label="Moderate" name="Mature"/> - <combo_box.item label="General" name="PG"/> - </combo_box> - <button label="Zastosuj" name="apply_btn"/> - <button label="Teleportuj do Miejsca Startu jednego Rezydenta..." name="kick_btn"/> - <button label="Teleportuj do Miejsca Startu wszystkich Rezydentów..." 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_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml index 0ae9c1cf618853fd92b5324c5359754d232f6e7c..95cd7c53dc357fb92c74f2134f622536642357a6 100644 --- a/indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/pl/panel_side_tray_tab_caption.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="Schowek"/> + <button name="undock" tool_tip="OdÅ‚Ä…cz"/> + <button name="dock" tool_tip="PrzyÅ‚Ä…cz"/> <button name="show_help" tool_tip="Pomoc"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml index 9e5280bcc41fa4890427dca40e19bcbf7c42b341..c2e50473a5e41c3ff01968728e8d542183be178f 100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_inventory.xml @@ -2,12 +2,20 @@ <panel label="Rzeczy" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Profil" name="info_btn" tool_tip="Pokaż profil obiektu"/> - <button label="UdostÄ™pnij" name="share_btn" tool_tip="UdostÄ™pnij obiekt z Szafy"/> - <button label="Zakupy" name="shop_btn" tool_tip="Otwórz stronÄ™ Marketplace"/> - <button label="Ubierz" name="wear_btn" tool_tip="Załóż wybrany strój"/> - <button label="Odtwarzaj" name="play_btn"/> - <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj siÄ™ w wybrane miejsce"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="info_btn_lp"> + <button label="Profil" name="info_btn" tool_tip="Pokaż profil obiektu"/> + </layout_panel> + <layout_panel name="share_btn_lp"> + <button label="UdostÄ™pnij" name="share_btn" tool_tip="UdostÄ™pnij obiekt z Szafy"/> + </layout_panel> + <layout_panel name="shop_btn_lp"> + <button label="Zakupy" name="shop_btn" tool_tip="Otwórz stronÄ™ Marketplace"/> + <button label="Załóż" name="wear_btn" tool_tip="Załóż wybrany strój"/> + <button label="Odtwarzaj" name="play_btn"/> + <button label="Teleportuj" name="teleport_btn" tool_tip="Teleportuj siÄ™ w wybrane miejsce"/> + </layout_panel> + </layout_stack> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml index e39bbd75c5d0a198d6f3baa2cb8d983ff8e073f2..0c285e65460146032a213209f50dab28673c9021 100644 --- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml @@ -23,54 +23,53 @@ </panel.string> <text name="title" value="Profil obiektu"/> <text name="origin" value="(Szafa)"/> - <panel label="" name="item_profile"> - <text name="LabelItemNameTitle"> - Nazwa: - </text> - <text name="LabelItemDescTitle"> - Opis: - </text> - <text name="LabelCreatorTitle"> - Twórca: - </text> - <button label="Profil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - WÅ‚aÅ›ciciel: - </text> - <button label="Profil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Nabyte: - </text> - <text name="LabelAcquiredDate"/> - <panel name="perms_inv"> - <text name="perm_modify"> - Możesz: + <scroll_container name="item_profile_scroll"> + <panel label="" name="item_profile"> + <text name="LabelItemNameTitle"> + Nazwa: </text> - <check_box label="Zmienia" name="CheckOwnerModify"/> - <check_box label="Kopiuj" name="CheckOwnerCopy"/> - <check_box label="Sprzedaje/Oddaje" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Każdy: + <text name="LabelItemDescTitle"> + Opis: </text> - <check_box label="Kopiuje" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupa: + <text name="LabelCreatorTitle"> + Twórca: </text> - <check_box label="UdostÄ™pnij" name="CheckShareWithGroup" tool_tip="Pozwól wszystkim czÅ‚onkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz przypisać obiekt grupie aby aktywować ograniczenia wynikajÄ…ce z roli."/> - <text name="NextOwnerLabel"> - NastÄ™pny wÅ‚aÅ›ciciel: + <text name="LabelOwnerTitle"> + WÅ‚aÅ›ciciel: </text> - <check_box label="Modyfikuje" name="CheckNextOwnerModify"/> - <check_box label="Kopiuje" name="CheckNextOwnerCopy"/> - <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="NastÄ™pny wÅ‚aÅ›ciciel może oddawać lub sprzedawać ten obiekt"/> + <text name="LabelAcquiredTitle"> + Nabyte: + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Możesz: + </text> + <check_box label="Modyfikuje" name="CheckOwnerModify"/> + <check_box label="Kopiuje" name="CheckOwnerCopy"/> + <check_box label="Oddaje/Sprzedaje" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Każdy: + </text> + <check_box label="Kopiuje" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupa: + </text> + <check_box label="UdostÄ™pnij" name="CheckShareWithGroup" tool_tip="Pozwól wszystkim czÅ‚onkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz przypisać obiekt grupie aby aktywować ograniczenia wynikajÄ…ce z roli."/> + <text name="NextOwnerLabel"> + NastÄ™pny wÅ‚aÅ›ciciel: + </text> + <check_box label="Modyfikuje" name="CheckNextOwnerModify"/> + <check_box label="Kopiuje" name="CheckNextOwnerCopy"/> + <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="NastÄ™pny wÅ‚aÅ›ciciel może oddawać lub sprzedawać ten obiekt"/> + </panel> + <check_box label="Na sprzedaż" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Kopiuje" name="Copy"/> + <combo_box.item label="Oryginalny" name="Original"/> + </combo_box> + <spinner label="Cena: L$" name="Edit Cost"/> </panel> - <check_box label="Na sprzedaż" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Kopiuje" name="Copy"/> - <combo_box.item label="Oryginalny" name="Original"/> - </combo_box> - <spinner label="Cena: L$" name="Edit Cost"/> - </panel> + </scroll_container> <panel name="button_panel"> <button label="Anuluj" name="cancel_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml index f90e357373bb3a9c38f890b3f0e302266ee17845..c9fe22f3c8209b7430af06ee41766857c31036bd 100644 --- a/indra/newview/skins/default/xui/pl/strings.xml +++ b/indra/newview/skins/default/xui/pl/strings.xml @@ -1264,6 +1264,9 @@ <string name="Right Pec"> Prawy Pec </string> + <string name="Invalid Attachment"> + Nieważny punkt zaÅ‚Ä…cznika + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] </string> @@ -1641,9 +1644,6 @@ <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD prawa dolna strona </string> - <string name="Bad attachment point"> - NieprawidÅ‚owy punkt zaÅ‚Ä…czenia - </string> <string name="CursorPos"> Linia [LINE], Kolumna [COLUMN] </string> @@ -1659,12 +1659,6 @@ <string name="BusyModeResponseDefault"> Rezydent, do którego wysÅ‚aÅ‚eÅ› wiadomość prywatnÄ… znajduje siÄ™ w trybie pracy. Oznacza to, iż Twoja wiadomość zostanie zapisana do przejrzenia poźniej. </string> - <string name="NoOutfits"> - Nie posiadasz jeszcze żadnych strojów. Spróbuj [secondlife:///app/search/all/ Szukaj] - </string> - <string name="NoOutfitsTabsMatched"> - Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/all/[SEARCH_TERM] Szukaj]. - </string> <string name="MuteByName"> (Nazwa) </string> @@ -1705,7 +1699,7 @@ Nie dodaÅ‚eÅ› nic do Ulubionych i Reklam. Kliknij na poniższy przycisk Dodaj aby dodać miejsce do Ulubionych lub Reklamy. </string> <string name="NoAvatarPicksClassifiedsText"> - Użytkownik nie posiada Ulubionych lub Reklam + Brak ulubionych miejsc/reklam </string> <string name="PicksClassifiedsLoadingText"> Åadowanie... @@ -1819,6 +1813,12 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="accel-win-shift"> Shift+ </string> + <string name="Esc"> + Esc + </string> + <string name="Home"> + Miejsce Startu + </string> <string name="FileSaved"> Zapisane pliki </string> @@ -3435,6 +3435,9 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj siÄ™ z [SUPPORT_SITE]. <string name="IM_moderator_label"> (Moderator) </string> + <string name="Saved_message"> + (Zapisano [LONG_TIMESTAMP]) + </string> <string name="answered_call"> Twoja rozmowa gÅ‚osowa zostaÅ‚a odebrana </string> @@ -3456,6 +3459,12 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj siÄ™ z [SUPPORT_SITE]. <string name="hang_up-im"> Rozmowa gÅ‚osowa zakoÅ„czona </string> + <string name="conference-title-incoming"> + Konferencja z [AGENT_NAME] + </string> + <string name="no_session_message"> + (Sesja IM wygasÅ‚a) + </string> <string name="only_user_message"> JesteÅ› jedynÄ… osobÄ… w tej konferencji. </string> @@ -3840,4 +3849,13 @@ Raport o Nadużyciu <string name="Chat"> Czat </string> + <string name="DeleteItems"> + UsuÅ„ wybrane obiekty? + </string> + <string name="DeleteItem"> + UsuÅ„ wybrane obiekty? + </string> + <string name="EmptyOutfitText"> + W tym stroju nie ma elementów + </string> </strings> diff --git a/indra/newview/skins/default/xui/pt/floater_about.xml b/indra/newview/skins/default/xui/pt/floater_about.xml index 4044110b47cc722977543556a6ead8abad10a0ea..ac365f170268f02976609c3b5807c10ecd508d7c 100644 --- a/indra/newview/skins/default/xui/pt/floater_about.xml +++ b/indra/newview/skins/default/xui/pt/floater_about.xml @@ -44,7 +44,7 @@ Versão do servidor de voz: [VOICE_VERSION] <text_editor name="credits_editor"> O Second Life é o resultado do trabalho de 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 e muitos mais. -Agradecemos também aos seguintes residentes por sua colaboração na mais nova versão do Second Life: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan e muitos mais. +Agradecemos também aos seguintes residentes por sua colaboração na mais nova versão do Second Life: Drew Dwi, Zai Lynch, Latif Khalifa, Ellla McMahon, Harleen Gretzky, Squirrel Wood, Malarthi Behemoth, Dante Tucker, Buckaroo Mu, Eddi Decosta, Dirk, Talamasca, Torben Trautman, Irene Muni, Aralara Rajal, Aura Dirval, Cayu Cluny, Eva Rau, FreeSL Aeon, Frontera Thor, Inma Rau, Lunita Savira, Minerva Memel, Polo Gufler, Xiki Luik, Lilly Zenovka, Vick Forcella, Sasy Scarborough, Gentle Welinder, Elric Anatine, Techwolf Lupindo, Dusan Writer, WolfPup Lowenhar, Marianne McCann, Fiachra Lach, Sitearm Madonna, Sudane Erato, Sahkolihaa Contepomi, Sachi Vixen, Questar Utu, Dimitrio Lewis, Matto Destiny, Scrim Pinion, Radio Signals, Psi Merlin, Pixel Gausman, Mel Vanbeeck, Laurent Bechir, Lamorna Proctor, Lares Carter, Gwyneth Llewelyn, Hydra Shaftoe, Holger Gilruth, Gentle Heron, Carla Broek, Boroondas Gupte, Fury Rosewood, Flower Ducatillon, Colpo Wexler, gwampa Lomu, Borg Capalini, Beansy Twine, Ardy Lay, , 45ms Zhong, Adeon Writer, Aeonix Aeon, Ai Austin, Aiko Ying, Alexandrea Fride, Alliez Mysterio, Annie Milestone, Annika Genezzia, Ansariel Hiller, ArminasX Saiman, Arya Braveheart, Asaeda Meltingdots, Asturkon Jua, Avallyn Oakleaf, Avatar Quinzet, BabyA Littlething, Bacchus Ireto, Bazaar, Riva, Benjamin Bigdipper, Beth Walcher, Bezilon Kasei, Biancaluce Robbiani, Bill Walach, blakopal Galicia, Blitzckreed Levenque, Bryn Oh, Callipygian Christensen, Cap Carver, Carr Arbenlow, Chantal Harvey, Charles Courtois, Charlie Sazaland, Cherry Cheevers, ChickyBabes Zuzu, Christopher Organiser, Ciaran Laval, Clara Young, Celierra Darling, Corinne Helendale, Corro Moseley, Coughdrop Littlething, Darien Caldwell, Dartagan Shepherd, Debs Regent, Decro Schmooz, Denim Kamachi, DiJodi Dubratt, Dil Spitz, Edgware Marker, Egehan Dryke, Emma Portilo, Emmie Fairymeadow, Evangelista Emerald, Faelon Swordthain, Frenchimmo Sabra, Gaberoonie Zanzibar, Ganymedes Costagravas, Gene Frostbite, GeneJ Composer, Giggles Littlebird, Grady Echegaray, Guni Greenstein, Gypsy Tripsa, Hackshaven Harford, Ham Rambler, Han Shuffle, Hanglow Short, Hatzfeld Runo, herina Bode, Horatio Freund, Hypatia Callisto, Hypatia Pickens, Identity Euler, Imnotgoing Sideways, Innula Zenovka, Iyoba Tarantal, Jack Abraham, Jagga Meredith, Jennifer Boyle, Jeremy Marquez, Jessica Qin, Jinx Nordberg, Jo Bernandes, Jocial Sonnenkern, Joel Savard, Jondan Lundquist, Josef Munster, Josette Windlow, Juilan Tripsa, Juro Kothari, Justin RiversRunRed, Kagehi Kohn, Kaimen Takahe, Keklily Longfall, Ken Lavender, Kestral Karas, Khisme Nitely, Kimar Coba, Kithrak Kirkorian, Kitty Barnett, Kolor Fall, Komiko Okamoto, Korvel Noh, Larry Pixel, Leal Choche, len Starship, Lenae Munz, Lexi Frua, Lillie Cordeaux, Lizzy Macarthur, LSL Scientist, Luban Yiyuan, Luc Starsider, Maccus McCullough, Madison Blanc, Maggie Darwin, Mallory Destiny, Manx Wharton, Marc Claridge, Marc2 Sands, Matthew Anthony, Maxim RiversRunRed, Medhue Simoni, Melinda Latynina, Mencius Watts, Michi Lumin, Midian Farspire, Miles Glaz, Mindy Mathy, Mitch Wagner, Mo Hax, Mourna Biziou, Nao Noe, naofan Teardrop, Naomah Beaumont, Nathiel Siamendes, Nber Medici, Neko Link, Netpat Igaly, Neutron Chesnokov, Newfie Pendragon, Nicholai Laviscu, Nick Rhodes, Nicoladie Gymnast, Ollie Kubrick, Orenj Marat, Orion Delphis, Oryx Tempel, Parvati Silverweb, PeterPunk Mooney, Pixel Scientist, Pounce Teazle, Professor Noarlunga, Quantum Destiny, Quicksilver Hermes, Ralf Setsuko, RAT Quan, RedMokum Bravin, Revolution Perenti, Rezit Sideways, Rich Grainger, Rosco Teardrop, Rose Evans, Rudee Voom, RufusTT Horsefly, Saii Hallard, SaintLEOlions Zimer, Samm Larkham, Satanello Miami, SexySteven Morrisey, Sheet Spotter, Shnurui Troughton, sicarius Thorne, Sicarius Toxx, Sini Nubalo, SLB Wirefly, snowy Sidran, Soupa Segura, ST Mensing, Starshine Halasy, Stickman Ingmann, Synystyr Texan, Takeda Terrawyng, Tali Rosca, Templar Merlin, Tezcatlipoca Bisiani, Tiel Stonecutter, Tony Kembia, TouchaHoney Perhaps, Trey Reanimator, TriloByte Zanzibar, Trinity Dechou, Trinity Dejavu, Unlikely Quintessa, UsikuFarasi Kanarik, Veritas Raymaker, Vex Streeter, Viaticus Speculaas, Villain Baroque, Vixie Durant, Void Singer, Watty Berkson, Westley Schridde, Westley Streeter, Whimsy Winx, Winter Ventura, Wundur Primbee, xstorm Radek, YongYong Francois, Zak Westminster, Zana Kohime, Zaren Alexander, Zeja Pyle, ZenMondo Wormser, Zoex Flanagan e muitos mais. diff --git a/indra/newview/skins/default/xui/pt/floater_customize.xml b/indra/newview/skins/default/xui/pt/floater_customize.xml deleted file mode 100644 index a9ec0b9b1ff84d140e2d5dfb7d361dbc3c70f3be..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_customize.xml +++ /dev/null @@ -1,530 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater customize" title="APARÊNCIA"> - <tab_container name="customize tab container" tab_min_width="115"> - <text label="Corpo" name="body_parts_placeholder"> - Partes do corpo - </text> - <panel label="Forma" name="Shape"> - <button label="Reverter" label_selected="Reverter" name="Revert"/> - <button label="Corpo" label_selected="Corpo" name="Body"/> - <button label="Cabeça" label_selected="Cabeça" name="Head"/> - <button label="Olhos" label_selected="Olhos" name="Eyes"/> - <button label="Orelhas" label_selected="Orelhas" name="Ears"/> - <button label="Nariz" label_selected="Nariz" name="Nose"/> - <button label="Boca" label_selected="Boca" name="Mouth"/> - <button label="Queixo" label_selected="Queixo" name="Chin"/> - <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 label="Feminino" name="radio" value="0"/> - <radio_item label="Masculino" name="radio2" value="1"/> - </radio_group> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter um fÃsico novo, arraste um do inventário para o seu avatar. Ou crie um novo. - </text> - <text name="no modify instructions"> - Você não tem permissão para modificar esta vestimenta. - </text> - <text name="Item Action Label"> - Forma: - </text> - <button label="Nova" label_selected="Nova" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <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" width="115"/> - <button label="Detalhes faciais" label_selected="Detalhes faciais" name="Face Detail" width="115"/> - <button label="Maquilagem" label_selected="Maquilagem" name="Makeup" width="115"/> - <button label="Detalhes do corpo" label_selected="Detalhes do corpo" name="Body Detail" width="115"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando.. - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizada em [PATH] - </text> - <text name="not worn instructions"> - Para obter uma pele nova, arraste uma do inventário para o seu avatar. Ou crie uma pele nova. - </text> - <text name="no modify instructions"> - Você não tem permissão para modificar esta vestimenta. - </text> - <text name="Item Action Label"> - Pele: - </text> - <texture_picker label="Tattoo: cabeça" name="Head Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> - <texture_picker label="Tattoo: superior" name="Upper Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> - <texture_picker label="Tattoo: inferior" name="Lower Tattoos" tool_tip="Clique para escolher um desenho" width="86"/> - <button label="Novo" label_selected="Novo" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <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" width="115"/> - <button label="Estilo" label_selected="Estilo" name="Style" width="115"/> - <button label="Sombrancelhas" label_selected="Sombrancelhas" name="Eyebrows" width="115"/> - <button label="Rosto" label_selected="Rosto" name="Facial" width="115"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter um cabelo novo, arraste um tipo de cabelo do inventário para o seu avatar. Ou crie um cabelo novo. - </text> - <text name="no modify instructions"> - 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="Criar novo cabelo" label_selected="Criar novo cabelo" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <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"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter novos olhos, arraste um tipo de olhos do inventário para o seu avatar. Ou crie olhos novos. - </text> - <text name="no modify instructions"> - 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="Criar novos olhos" label_selected="Criar novos olhos" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> - <button label="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <text label="Roupas" name="clothes_placeholder"> - Roupa - </text> - <panel label="Camisa" name="Shirt"> - <texture_picker label="Tecido" name="Fabric" tool_tip="Clique para escolher uma imagem"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> - <button label="Criar nova camisa" label_selected="Criar nova camisa" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> - <button label="Reverter" label_selected="Reverter" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter uma camisa nova, arraste uma do inventário para o seu avatar. Ou crie uma camisa nova. - </text> - <text name="no modify instructions"> - 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"/> - <color_swatch label="Cor/Tint" name="Color/Tint" tool_tip="Selecionar a cor"/> - <button label="Remover" label_selected="Remover" name="Take Off"/> - <button label="Criar novas calças" label_selected="Criar novas calças" name="Create New"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> - <button label="Reverter" label_selected="Reverter" name="Revert"/> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestindo - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter calças novas, arraste uma do inventário para o seu avatar. Ou crie calças novas. - </text> - <text name="no modify instructions"> - 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 name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter novos olhos, arraste um tipo de olhos do inventário para o seu avatar. Ou crie olhos novos. - </text> - <button label="Criar novos sapatos" label_selected="Criar novos sapatos" name="Create New" width="166"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Meias" name="Socks"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido. - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter meias novas, arraste um par do inventário para o seu avatar. Ou crie meias novas. - </text> - <button label="Criar novas meias" label_selected="Criar novas meias" name="Create New"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Jaqueta" name="Jacket"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: Não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para por uma jaqueta nova, arraste uma do inventário para o seu avatar. Ou crie uma jaqueta nova. - </text> - <button label="Criar nova jaqueta" label_selected="Criar nova jaqueta" name="Create New"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Luvas" name="Gloves"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando.... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter luvas novas, arraste um par do inventário para o seu avatar. Ou crie luvas novas. - </text> - <button label="Criar novas luvas" label_selected="Criar novas luvas" name="Create New"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Camiseta" name="Undershirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter uma camiseta nova, arraste uma do inventário para o seu avatar. Ou crie uma camiseta nova. - </text> - <button label="Criar nova camiseta" label_selected="Criar nova camiseta" name="Create New"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Roupas de Baixo" name="Underpants"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter roupa de baixo nova, arraste um modelo do inventário para o seu avatar. Ou crie uma roupa de baixo nova. - </text> - <button label="Criar novas" label_selected="Criar novas" name="Create New" width="180"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Saia" name="Skirt"> - <text name="title"> - [DESC] - </text> - <text name="title_no_modify"> - [DESC]: não foi possÃvel modificar - </text> - <text name="title_loading"> - [DESC]: carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localizado em [PATH] - </text> - <text name="not worn instructions"> - Para obter um saia nova, arraste uma saia do inventário para o seu avatar. Ou crie uma saia nova. - </text> - <button label="Criar nova saia" label_selected="Criar nova saia" name="Create New"/> - <text name="no modify instructions"> - 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="Selecionar a cor"/> - <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="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Tatuagem" name="Tattoo"> - <text name="title"> - [DESC]: - </text> - <text name="title_no_modify"> - [DESC]: não pode ser modificado - </text> - <text name="title_loading"> - [DESC]: Carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localização: [PATH] - </text> - <text name="not worn instructions"> - Para por uma tatuagem nova, arraste uma tatuagem do inventário para o seu avatar. Ou crie uma tatuagem nova. - </text> - <button label="Criar tatuagem" label_selected="Criar tatuagem" name="Create New"/> - <text name="no modify instructions"> - Você não está autorizado a modificar este acessório. - </text> - <text name="Item Action Label"> - Tatuagem: - </text> - <texture_picker label="Tatuagem na cabeça" name="Head Tattoo" tool_tip="Selecionar imagem"/> - <texture_picker label="Tatuagem parte de cima" name="Upper Tattoo" tool_tip="Selecionar imagem"/> - <texture_picker label="Tatuagem de baixo" name="Lower Tattoo" tool_tip="Selecionar imagem"/> - <button label="Tirar" label_selected="Tirar" name="Take Off"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Salvar como..." label_selected="Salvar como..." name="Save As"/> - <button label="Reverter" label_selected="Reverter" name="Revert"/> - </panel> - <panel label="Alpha" name="Alpha"> - <text name="title"> - [DESC]: - </text> - <text name="title_no_modify"> - [DESC]: não pode ser modificado - </text> - <text name="title_loading"> - [DESC]: Carregando... - </text> - <text name="title_not_worn"> - [DESC]: não vestido - </text> - <text name="path"> - Localização: [PATH] - </text> - <text name="not worn instructions"> - Para por uma máscara alpha nova, arraste a máscara do inventário para o seu avatar. Ou crie uma máscara nova. - </text> - <button label="Criar Alpha novo" label_selected="Criar Alpha novo" name="Create New"/> - <text name="no modify instructions"> - Você não está autorizado a modificar este acessório. - </text> - <text name="Item Action Label"> - Alpha: - </text> - <texture_picker label="Alpha inferior" name="Lower Alpha" tool_tip="Selecionar imagem"/> - <texture_picker label="Alpha de cima" name="Upper Alpha" tool_tip="Selecionar imagem"/> - <texture_picker label="Cabeça Alpha" name="Head Alpha" tool_tip="Selecionar imagem"/> - <texture_picker label="Olhos Alpha" name="Eye Alpha" tool_tip="Selecionar imagem"/> - <texture_picker label="Cabelo alpha" name="Hair Alpha" tool_tip="Selecionar imagem"/> - <button label="Tirar" label_selected="Tirar" name="Take Off"/> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <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="249" name="panel_container"/> - <button label="Dados do script" label_selected="Dados do script" name="script_info" tool_tip="Mostrar scripts anexados ao seu avatar"/> - <button label="Criar look" label_selected="Criar look" name="make_outfit_btn"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <button label="OK" label_selected="OK" name="Ok"/> -</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 deleted file mode 100644 index 48a4a6ef6f4539b3fee8e94cf4758f89593afb0d..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_device_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="floater_device_settings" title="CONFIGURAÇÃO DE DISPOSITIVO DE VOZ"/> diff --git a/indra/newview/skins/default/xui/pt/floater_im.xml b/indra/newview/skins/default/xui/pt/floater_im.xml deleted file mode 100644 index c81d0dd7ef37d079c0641a4044a9cc20a11d28a0..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_im.xml +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<multi_floater name="im_floater" title="Mensagem Instantânea"> - <string name="only_user_message"> - Você é o único residente nesta sessão - </string> - <string name="offline_message"> - [FIRST] [LAST] está offline. - </string> - <string name="invite_message"> - Clique no botão [BUTTON NAME] para aceitar/ conectar a este bate-papo em voz. - </string> - <string name="muted_message"> - Você bloqueou este residente. Se quiser retirar o bloqueio, basta enviar uma mensagem. - </string> - <string name="generic_request_error"> - Erro na requisição, por favor, tente novamente. - </string> - <string name="insufficient_perms_error"> - Você não tem permissões suficientes. - </string> - <string name="session_does_not_exist_error"> - A sessão deixou de existir - </string> - <string name="no_ability_error"> - Você não possui esta habilidade. - </string> - <string name="not_a_mod_error"> - Você não é um moderador de sessão. - </string> - <string name="muted_error"> - Um moderador do grupo desabilitou seu bate-papo em texto. - </string> - <string name="add_session_event"> - Não foi possÃvel adicionar residentes ao bate-papo com [RECIPIENT]. - </string> - <string name="message_session_event"> - Não foi possÃvel enviar sua mensagem na sessão de bate- papo com [RECIPIENT]. - </string> - <string name="removed_from_group"> - Você foi removido do grupo. - </string> - <string name="close_on_no_ability"> - Você não possui mais a habilidade de estar na sessão de bate-papo. - </string> -</multi_floater> diff --git a/indra/newview/skins/default/xui/pt/floater_im_session.xml b/indra/newview/skins/default/xui/pt/floater_im_session.xml index 39dde3408bd4c305b5de7cb39dd914cf712e4fa4..5543ffa41da8aa8b8a777f2839913f621595373c 100644 --- a/indra/newview/skins/default/xui/pt/floater_im_session.xml +++ b/indra/newview/skins/default/xui/pt/floater_im_session.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="panel_im"> <layout_stack name="im_panels"> - <layout_panel label="Painel de controle de MI" name="panel_im_control_panel"/> <layout_panel> <line_editor label="Para" name="chat_editor"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/pt/floater_map.xml b/indra/newview/skins/default/xui/pt/floater_map.xml index 6f09a5e38322bc1bab9187058ecd57b1811dfafd..38c264719985e502e528ce252ab53634acb14163 100644 --- a/indra/newview/skins/default/xui/pt/floater_map.xml +++ b/indra/newview/skins/default/xui/pt/floater_map.xml @@ -1,28 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <floater name="Map" title=""> - <floater.string name="mini_map_north"> - N - </floater.string> - <floater.string name="mini_map_east"> - L - </floater.string> - <floater.string name="mini_map_west"> - O - </floater.string> - <floater.string name="mini_map_south"> - S - </floater.string> - <floater.string name="mini_map_southeast"> - SE - </floater.string> - <floater.string name="mini_map_northeast"> - NE - </floater.string> - <floater.string name="mini_map_southwest"> - SO - </floater.string> - <floater.string name="mini_map_northwest"> - NO + <floater.string name="ToolTipMsg"> + [REGION](Clique duas vezes para abrir o mapa, shift+arraste para a visão pan) </floater.string> <floater.string name="mini_map_caption"> MINIMAPA diff --git a/indra/newview/skins/default/xui/pt/floater_my_friends.xml b/indra/newview/skins/default/xui/pt/floater_my_friends.xml deleted file mode 100644 index 68f2a19998df9a9f60e4c61e377701cd6ba73471..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_my_friends.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?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_nearby_chat.xml b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml index 5ba2dcd925fd2e8a8a351b7867458acbaa14c594..60edfa505fe43df2dc76ab4db7e4daf5e66d526d 100644 --- a/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/pt/floater_nearby_chat.xml @@ -1,2 +1,4 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="nearby_chat" title="Bate-papo local"/> +<floater name="nearby_chat" title="Bate-papo local"> + <check_box label="Traduzir bate-papo (via Google)" name="translate_chat_checkbox"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml b/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml deleted file mode 100644 index dec8a7676ad4d465bdb3b0bf1686350c017bfed8..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_outfit_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title="Salvar este look"> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Veja o meu novo visual: - </text> - <line_editor name="name ed"> - [DESC] (new) - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml b/indra/newview/skins/default/xui/pt/floater_preview_classified.xml deleted file mode 100644 index bb626430ed2ab59fddc05e0f9e8e33878238c2c3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_preview_classified.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="classified_preview" title="INFORMAÇÕES CLASSIFICADAS"> - <floater.string name="Title"> - Classificados: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_event.xml b/indra/newview/skins/default/xui/pt/floater_preview_event.xml deleted file mode 100644 index b422580f3b83fe1160e30647990b69e69721c428..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_preview_event.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="event_preview" title="DADOS DO EVENTO"> - <floater.string name="Title"> - Evento: [NAME] - </floater.string> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml deleted file mode 100644 index aabcff70d3b999d131ff73bebcff4643da65224c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture_info.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATALHO DE GESTO"/> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml deleted file mode 100644 index 64bb7785f6fb05cb5dc8142270b9b595f283f0e4..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture_shortcut.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATALHO DE GESTO"> - <text name="trigger_label"> - Bate-papo: - </text> - <text name="key_label"> - Tecla: - </text> - <combo_box label="Nenhum" name="modifier_combo"/> - <combo_box label="Nenhum" name="key_combo"/> - <text name="replace_text" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando 'olá' por 'oi' para trocar 'Olá, tudo bem' por 'Oi tudo bem'. O gesto também será executado."> - Trocar: - </text> - <line_editor name="replace_editor" tool_tip="Substituir a(s) palavra(s) de comando. Por exemplo, substitua o comando 'olá' por 'oi' para trocar 'Olá, tudo bem' por 'Oi tudo bem'. O gesto também será executado."/> -</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml deleted file mode 100644 index aabcff70d3b999d131ff73bebcff4643da65224c..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_preview_gesture_steps.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Gesture" title="ATALHO DE GESTO"/> diff --git a/indra/newview/skins/default/xui/pt/floater_statistics.xml b/indra/newview/skins/default/xui/pt/floater_statistics.xml deleted file mode 100644 index ecbf638157fb3f2216761ea0c41fc8f45c60359a..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_statistics.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="stats floater" title="ESTATÃSTICAS"/> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index 67d8e35cf2e36227424d613cb8637542fd4dd4ec..14e00fa7ae3b67a391f85aef75ec910c8fd41581 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -182,10 +182,10 @@ <text name="Group:"> Grupo: </text> - <button label="Definir..." label_selected="Definir..." name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/> <name_box initial_value="Carregando..." name="Group Name Proxy"/> - <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/> + <button label="Definir..." label_selected="Definir..." name="button set group" tool_tip="Selecione o grupo que terá acesso à autorização do objeto"/> <check_box label="Compartilhar" name="checkbox share with group" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/> + <button label="Doar" label_selected="Doar" name="button deed" tool_tip="Ao doar este item, o próximo dono terá permissões de próximo dono. Objetos de grupos podem ser doados por um oficial do grupo."/> <text name="label click action"> Clique para: </text> @@ -437,8 +437,9 @@ <combo_box.item label="Sulcos" name="suction"/> <combo_box.item label="Weave" name="weave"/> </combo_box> - <text name="tex scale"> - Repetições/Face + <check_box initial_value="falso" label="Alinhar planares" name="checkbox planar align" tool_tip="Alinhar texturas dos planos selecionados com o plano selecionado por último. Requer mapeamento planar da textura."/> + <text name="rpt"> + Repetições / Plano </text> <spinner label="Horizontal (U)" name="TexScaleU"/> <check_box label="Inverter" name="checkbox flip s"/> diff --git a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml index 44f08b76b5ecec93c94e561df8751a09bc4546bc..2337ee3074292e6b3a22ff5d917dd9fd7b7518a6 100644 --- a/indra/newview/skins/default/xui/pt/floater_voice_controls.xml +++ b/indra/newview/skins/default/xui/pt/floater_voice_controls.xml @@ -19,10 +19,12 @@ <layout_panel name="my_panel"> <text name="user_text" value="Meu avatar:"/> </layout_panel> - <layout_stack name="voice_effect_and_leave_call_stack"> - <layout_panel name="leave_call_btn_panel"> - <button label="Desligar" name="leave_call_btn"/> - </layout_panel> - </layout_stack> + <layout_panel name="leave_call_panel"> + <layout_stack name="voice_effect_and_leave_call_stack"> + <layout_panel name="leave_call_btn_panel"> + <button label="Desligar" name="leave_call_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </floater> diff --git a/indra/newview/skins/default/xui/pt/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/pt/floater_wearable_save_as.xml deleted file mode 100644 index 282bf0e268c7168fbb685664d81478e1061f4ded..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/floater_wearable_save_as.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="modal container" title=" "> - <button label="Salvar" label_selected="Salvar" name="Save"/> - <button label="Cancelar" label_selected="Cancelar" name="Cancel"/> - <text name="Save item as:"> - Salvar item no inventário como: - </text> - <line_editor name="name ed"> - Novo [DESC] - </line_editor> -</floater> diff --git a/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml b/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml new file mode 100644 index 0000000000000000000000000000000000000000..4b81276ab34c6b7f1ef3d8c8f40aff26992bb8c3 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/menu_add_wearable_gear.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<menu name="Add Wearable Gear Menu"> + <menu_item_check label="Ordenar por mais recente" name="sort_by_most_recent"/> + <menu_item_check label="Ordenar por nome" name="sort_by_name"/> + <menu_item_check label="Ordenar por tipo" name="sort_by_type"/> +</menu> diff --git a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml index 65070f821a84bbdc0ba2cb0f2209e16e6bfb3cda..09060cf3aeebee94d425b98017bd24a6785ec6b0 100644 --- a/indra/newview/skins/default/xui/pt/menu_attachment_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_attachment_self.xml @@ -3,6 +3,7 @@ <menu_item_call label="Tocar" name="Attachment Object Touch"/> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Tirar" name="Detach"/> + <menu_item_call label="Sentar" name="Sit Down Here"/> <menu_item_call label="Ficar de pé" name="Stand Up"/> <menu_item_call label="Trocar de look" name="Change Outfit"/> <menu_item_call label="Editar meu look" name="Edit Outfit"/> diff --git a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml index 62055303b583c67e77f3aec0f8ab379b743bb260..6e203d5a259329db5a39691d7653089f0b478b09 100644 --- a/indra/newview/skins/default/xui/pt/menu_avatar_self.xml +++ b/indra/newview/skins/default/xui/pt/menu_avatar_self.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Self Pie"> + <menu_item_call label="Sentar" name="Sit Down Here"/> <menu_item_call label="Ficar de pé" name="Stand Up"/> - <context_menu label="Tirar â–¶" name="Take Off >"> - <context_menu label="Roupa â–¶" name="Clothes >"> + <context_menu label="Tirar" name="Take Off >"> + <context_menu label="Roupa" name="Clothes >"> <menu_item_call label="Camisa" name="Shirt"/> <menu_item_call label="Calças" name="Pants"/> <menu_item_call label="Saia" name="Skirt"/> @@ -16,8 +17,8 @@ <menu_item_call label="Alpha" name="Self Alpha"/> <menu_item_call label="Todas as roupas" name="All Clothes"/> </context_menu> - <context_menu label="HUD â–¶" name="Object Detach HUD"/> - <context_menu label="Tirar â–¶" name="Object Detach"/> + <context_menu label="HUD" name="Object Detach HUD"/> + <context_menu label="Tirar" name="Object Detach"/> <menu_item_call label="Tirar tudo" name="Detach All"/> </context_menu> <menu_item_call label="Trocar de look" name="Chenge Outfit"/> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml index b69d20553319bfbf67b4b51e5441beab60471097..184db26538def0c429cf94c9c994e7f4f9ada8db 100644 --- a/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_inspect_object_gear.xml @@ -9,6 +9,7 @@ <menu_item_call label="Abrir" name="open"/> <menu_item_call label="Editar" name="edit"/> <menu_item_call label="Vestir" name="wear"/> + <menu_item_call label="Adicionar" name="add"/> <menu_item_call label="Denunciar" name="report"/> <menu_item_call label="Bloquear" name="block"/> <menu_item_call label="Mais zoom" name="zoom_in"/> diff --git a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml index c3e0608954d93948e13168fa7309db1c8abd0a6a..7e67f4cfd41556b197405452f418563a8970882c 100644 --- a/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_inspect_self_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <menu name="Gear Menu"> + <menu_item_call label="Sentar" name="sit_down_here"/> <menu_item_call label="Ficar de pé" name="stand_up"/> <menu_item_call label="Trocar de look" name="change_outfit"/> <menu_item_call label="Meu perfil" name="my_profile"/> diff --git a/indra/newview/skins/default/xui/pt/menu_mini_map.xml b/indra/newview/skins/default/xui/pt/menu_mini_map.xml index 380bd8cf11ce645f864ca6c0a576d231f8be151a..d742038e1521a40089d8f21871f02e42ecd30378 100644 --- a/indra/newview/skins/default/xui/pt/menu_mini_map.xml +++ b/indra/newview/skins/default/xui/pt/menu_mini_map.xml @@ -4,6 +4,7 @@ <menu_item_call label="Zoom Médio" name="Zoom Medium"/> <menu_item_call label="Zoom Longe" name="Zoom Far"/> <menu_item_check label="Girar mapa" name="Rotate Map"/> + <menu_item_check label="Auto Center" name="Auto Center"/> <menu_item_call label="Parar Acompanhamento" name="Stop Tracking"/> <menu_item_call label="Mapa-múndi" name="World Map"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_object.xml b/indra/newview/skins/default/xui/pt/menu_object.xml index cd1a72b896ab339cb3f8d93760b476cd30493259..bf9485969987b7485e36fb531fad188c2aead187 100644 --- a/indra/newview/skins/default/xui/pt/menu_object.xml +++ b/indra/newview/skins/default/xui/pt/menu_object.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Object Pie"> <menu_item_call label="Tocar" name="Object Touch"> - <on_enable parameter="Tocar" name="EnableTouch"/> + <menu_item_call.on_enable name="EnableTouch" parameter="Tocar"/> </menu_item_call> <menu_item_call label="Editar" name="Edit..."/> <menu_item_call label="Construir" name="Build"/> @@ -12,16 +12,16 @@ <menu_item_call label="Mais zoom" name="Zoom In"/> <context_menu label="Colocar no(a)" name="Put On"> <menu_item_call label="Vestir" name="Wear"/> - <context_menu label="Anexar >" name="Object Attach"/> - <context_menu label="Anexar o HUD >" name="Object Attach HUD"/> + <menu_item_call label="Adicionar" name="Add"/> + <context_menu label="Anexar" name="Object Attach"/> + <context_menu label="Anexar o HUD" name="Object Attach HUD"/> </context_menu> - <context_menu label="Tirar >" name="Remove"> + <context_menu label="Tirar" name="Remove"> <menu_item_call label="Denunciar abuso" name="Report Abuse..."/> <menu_item_call label="Bloquear" name="Object Mute"/> <menu_item_call label="Devolver" name="Return..."/> <menu_item_call label="Excluir" name="Delete"/> </context_menu> - <menu_item_call label="Comprar" name="Pie Object Bye"/> <menu_item_call label="Pegar" name="Pie Object Take"/> <menu_item_call label="Pegar uma cópia" name="Take Copy"/> <menu_item_call label="Pagar" name="Pay..."/> diff --git a/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml index 25a37488d7959f8163e917cf8da79c34b98acf48..e7c325010fbe40a4ef29a6c2233179cca11ab181 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_friends_view_sort.xml @@ -3,5 +3,6 @@ <menu_item_check label="Ordenar por nome" name="sort_name"/> <menu_item_check label="Ordenar por status" name="sort_status"/> <menu_item_check label="Ver Ãcones de pessoas" name="view_icons"/> + <menu_item_check label="Autorizações de visualização dadas" name="view_permissions"/> <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml index fc08b3accb56c06b995028918698f495ce409f2c..79edb96b1c67aa651c516ec5b5cb7fce0b99b6f3 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_multiselect.xml @@ -6,4 +6,5 @@ <menu_item_call label="Ligar" name="Call"/> <menu_item_call label="Compartilhar" name="Share"/> <menu_item_call label="Pagar" name="Pay"/> + <menu_item_call label="Teletransportar?" name="teleport"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 33fccbedcce7bd75bd4d96a02313f64cf41a5ad6..90adb3fdb59c057b43c19844d918c916621a8b2d 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -94,7 +94,6 @@ <menu_item_call label="Scripts em modo não execução" name="Set Scripts to Not Running"/> </menu> <menu label="Opções" name="Options"> - <menu_item_call label="Autorizações de upload padrão" name="perm prefs"/> <menu_item_check label="Mostrar permissões avançadas" name="DebugPermissions"/> <menu_item_check label="Só selecionar meus objetos" name="Select Only My Objects"/> <menu_item_check label="Só selecionar objetos móveis" name="Select Only Movable Objects"/> @@ -121,7 +120,6 @@ <menu_item_call label="Sobre [APP_NAME]" name="About Second Life"/> </menu> <menu label="Avançado" name="Advanced"> - <menu_item_check label="Exibir menu avançado" name="Show Advanced Menu"/> <menu_item_call label="Parar minha animação" name="Stop Animating My Avatar"/> <menu_item_call label="Recarregar texturas" name="Rebake Texture"/> <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/> @@ -168,7 +166,6 @@ <menu_item_check label="Neblina" name="Fog"/> <menu_item_check label="Objetos flexÃveis" name="Flexible Objects"/> </menu> - <menu_item_check label="Executar diversas instâncias" name="Run Multiple Threads"/> <menu_item_check label="Usar plugin de leitura de threads" name="Use Plugin Read Thread"/> <menu_item_call label="Limpar cache de grupo" name="ClearGroupCache"/> <menu_item_check label="Smoothing de mouse" name="Mouse Smoothing"/> @@ -177,7 +174,6 @@ <menu_item_check label="Busca" name="Search"/> <menu_item_call label="Soltar objeto" name="Release Keys"/> <menu_item_call label="Interface tamanho padrão" name="Set UI Size to Default"/> - <menu_item_check label="Mostrar menu avançado - atalho antigo" name="Show Advanced Menu - legacy shortcut"/> <menu_item_check label="Correr sempre" name="Always Run"/> <menu_item_check label="Voar" name="Fly"/> <menu_item_call label="Fechar janela" name="Close Window"/> @@ -197,6 +193,7 @@ <menu_item_call label="Mais zoom" name="Zoom In"/> <menu_item_call label="Zoom padrão" name="Zoom Default"/> <menu_item_call label="Menos zoom" name="Zoom Out"/> + <menu_item_check label="Exibir menu avançado" name="Show Advanced Menu"/> </menu> <menu_item_call label="Mostrar configurações de depuração" name="Debug Settings"/> <menu_item_check label="Show Develop Menu" name="Debug Mode"/> @@ -239,9 +236,15 @@ <menu label="Rendering" name="Rendering"> <menu_item_check label="Axes" name="Axes"/> <menu_item_check label="Wireframe" name="Wireframe"/> - <menu_item_check label="Global Illumination" name="Global Illumination"/> + <menu_item_check label="Iluminação e sombras" name="Lighting and Shadows"/> + <menu_item_check label="Sombras da projeção do sol/lua" name="Shadows from Sun/Moon/Projectors"/> + <menu_item_check label="SSAO e sombra suave" name="SSAO and Shadow Smoothing"/> + <menu_item_check label="Iluminação global (fase experimental)" name="Global Illumination"/> + <menu_item_check label="Máscaras alpha automáticas (adiadas)" name="Automatic Alpha Masks (deferred)"/> + <menu_item_check label="Máscaras alpha automáticas (sem adiar)" name="Automatic Alpha Masks (non-deferred)"/> <menu_item_check label="Texturas de animação" name="Animation Textures"/> <menu_item_check label="Desativar texturas" name="Disable Textures"/> + <menu_item_check label="Atlas texturizado (fase experimental)" name="Texture Atlas"/> <menu_item_check label="Render Attached Lights" name="Render Attached Lights"/> <menu_item_check label="Render Attached Particles" name="Render Attached Particles"/> <menu_item_check label="Objetos iridescentes" name="Hover Glow Objects"/> @@ -261,7 +264,8 @@ <menu_item_call label="Teste de navegador web" name="Web Browser Test"/> <menu_item_call label="Print Selected Object Info" name="Print Selected Object Info"/> <menu_item_call label="Dados de memória" name="Memory Stats"/> - <menu_item_check label="Double-Click Auto-Pilot" name="Double-ClickAuto-Pilot"/> + <menu_item_check label="Trajeto c/ dois cliques" name="Double-Click Auto-Pilot"/> + <menu_item_check label="Teletransportar c/ dois cliques" name="DoubleClick Teleport"/> <menu_item_check label="Debug Clicks" name="Debug Clicks"/> <menu_item_check label="Debug Mouse Events" name="Debug Mouse Events"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml b/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml index f8e8a3352134f193a17ce59c16598d59e928d92f..2487f6779f6306dd610254cce7bb65b0102cb608 100644 --- a/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearable_list_item.xml @@ -5,10 +5,10 @@ <menu_item_call label="Adicionar" name="wear_add"/> <menu_item_call label="Tirar / Separar" name="take_off_or_detach"/> <menu_item_call label="Separar" name="detach"/> - <context_menu label="Colocar em â–¶" name="wearable_attach_to"/> - <context_menu label="Anexar ao HUD â–¶" name="wearable_attach_to_hud"/> + <context_menu label="Colocar em" name="wearable_attach_to"/> + <context_menu label="Anexar ao HUD" name="wearable_attach_to_hud"/> <menu_item_call label="Tirar" name="take_off"/> <menu_item_call label="Editar" name="edit"/> - <menu_item_call label="Perfil do objeto" name="object_profile"/> + <menu_item_call label="Perfil do item" name="object_profile"/> <menu_item_call label="Mostrar original" name="show_original"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml index c0387f491a7dd39898acd82bef13c903be475261..7b6ce4d87ec8798c1efd50ad4aebbcddd5f7ce8a 100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml @@ -1,4 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <menu name="Gear Wearing"> <menu_item_call label="Editar look" name="edit"/> + <menu_item_call label="Tirar" name="takeoff"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml index 5b62d9578c435e703aa12e6e39a971c0950f25a2..4e6e52ebc7010f91d6fe21a9b448eeb45126305c 100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_tab.xml @@ -1,4 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <context_menu name="Wearing"> + <menu_item_call label="Tirar" name="take_off"/> + <menu_item_call label="Tirar" name="detach"/> <menu_item_call label="Editar look" name="edit"/> </context_menu> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index a6645d8b134dc1f10c0c367c0e614c000975f765..ec0ea9efffadccfe1511f818ac11b1a1c8f1d13a 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -1801,6 +1801,10 @@ Mover para o inventário o(s) item(s)? Tem certeza que deseja sair? <usetemplate ignoretext="Confirmar antes de sair" name="okcancelignore" notext="Não sair" yestext="Sair"/> </notification> + <notification name="DeleteItems"> + [QUESTION] + <usetemplate ignoretext="Confirmar antes de excluir" name="okcancelignore" notext="Cancelar" yestext="OK"/> + </notification> <notification name="HelpReportAbuseEmailLL"> Use esta ferramenta para denunciar infrações dos [http://secondlife.com/corporate/tos.php Termos do Serviço] e das [http://secondlife.com/corporate/cs.php Normas da Comunidade]. @@ -2727,9 +2731,13 @@ Verifique a configuração da sua rede e firewall. ( [EXISTENCE] segundos de vida ) Avatar '[NAME]' saiu totalmente carregado. </notification> - <notification name="AvatarRezSelfBakeNotification"> + <notification name="AvatarRezSelfBakedTextureUploadNotification"> + ( [EXISTENCE] segundos de vida ) +Você carregou uma textura com [RESOLUTION] para o(a) '[BODYREGION]' em [TIME] segundos. + </notification> + <notification name="AvatarRezSelfBakedTextureUpdateNotification"> ( [EXISTENCE] segundos de vida ) -[ACTION] de textura com [RESOLUTION] para o(a) '[BODYREGION]' em [TIME] segundos. +Você carregou uma textura com [RESOLUTION] para o(a) '[BODYREGION]' em [TIME] segundos. </notification> <notification name="ConfirmLeaveCall"> Tem certeza de que quer sair desta ligação? diff --git a/indra/newview/skins/default/xui/pt/panel_audio_device.xml b/indra/newview/skins/default/xui/pt/panel_audio_device.xml deleted file mode 100644 index 967dc270707d7c48f7efef42c9186f601b17a479..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_audio_device.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="device_settings"> - <text name="Audio Devices"> - Dispositivos de Ãudio - </text> - <text name="Input device (microphone):"> - Dispositivo de entrada (microfone): - </text> - <text name="Output device (speakers):"> - Dispositivo de saÃda (falantes): - </text> - <text name="Input level:"> - NÃvel de Entrada - </text> - <text_editor name="voice_intro_text1"> - Ajuste a barra para controlar o volume de som para os outros residentes. Para testar o nÃvel de entrada, basta falar em seu microfone. - </text_editor> - <volume_slider name="mic_volume_slider" tool_tip="Altere o volume usando este controle gradual"/> - <text name="wait_text"> - Por Favor aguarde - </text> - <string name="default_text"> - Padrão - </string> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml index 06d8823a74e6ddd34a100c55f9eba9bc545d92a1..ca67125c65fc618f31e7badc056f8fe4b80c0487 100644 --- a/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/pt/panel_avatar_list_item.xml @@ -22,5 +22,9 @@ [COUNT]anos </string> <text name="avatar_name" value="Desconhecido"/> + <icon name="permission_edit_theirs_icon" tool_tip="Você pode editar os pertences deste amigo"/> + <icon name="permission_edit_mine_icon" tool_tip="Este amigo pode editar, excluir ou pegar seus pertences"/> + <icon name="permission_map_icon" tool_tip="Este amigo pode localizar você no mapa"/> + <icon name="permission_online_icon" tool_tip="Este amigo pode saber quando você estiver online"/> <button name="profile_btn" tool_tip="Ver perfil"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml index 9fd7da55dffe57b6c61b1db80937531709d0961e..cb517f643cc39a5cbfa5fce0e5ba633a2b183a4b 100644 --- a/indra/newview/skins/default/xui/pt/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/pt/panel_bottomtray.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="bottom_tray"> + <string name="DragIndicationImageName" value="Accordion_ArrowOpened_Off"/> <string name="SpeakBtnToolTip" value="Liga e desliga o microfone"/> <string name="VoiceControlBtnToolTip" value="Mostra/oculta os controles de voz"/> <layout_stack name="toolbar_stack"> @@ -12,28 +13,25 @@ <gesture_combo_list label="Gesto" name="Gesture" tool_tip="Mostra/oculta os gestos"/> </layout_panel> <layout_panel name="movement_panel"> - <button label="Movimentar" name="movement_btn" tool_tip="Mostra/oculta os controles de movimento"/> + <bottomtray_button label="Movimentar" name="movement_btn" tool_tip="Mostra/oculta os controles de movimento"/> </layout_panel> <layout_panel name="cam_panel"> - <button label="Exibir" name="camera_btn" tool_tip="Mostra/oculta os controles da câmera"/> + <bottomtray_button label="Exibir" name="camera_btn" tool_tip="Mostra/oculta os controles da câmera"/> </layout_panel> <layout_panel name="snapshot_panel"> - <button label="" name="snapshots" tool_tip="Tirar foto"/> - </layout_panel> - <layout_panel name="sidebar_btn_panel"> - <button label="Barra lateral" name="sidebar_btn" tool_tip="Mostra/oculta a barra lateral"/> + <bottomtray_button label="" name="snapshots" tool_tip="Tirar foto"/> </layout_panel> <layout_panel name="build_btn_panel"> - <button label="Construir" name="build_btn" tool_tip="Mostra/oculta ferramentas de Construção"/> + <bottomtray_button label="Construir" name="build_btn" tool_tip="Mostra/oculta ferramentas de Construção"/> </layout_panel> <layout_panel name="search_btn_panel"> - <button label="Busca" name="search_btn" tool_tip="Mostra/oculta os gestos"/> + <bottomtray_button label="Busca" name="search_btn" tool_tip="Mostra/oculta os gestos"/> </layout_panel> <layout_panel name="world_map_btn_panel"> - <button label="Mapa" name="world_map_btn" tool_tip="Mostra/oculta o Mapa Múndi"/> + <bottomtray_button label="Mapa" name="world_map_btn" tool_tip="Mostra/oculta o Mapa Múndi"/> </layout_panel> <layout_panel name="mini_map_btn_panel"> - <button label="Mini Mapa" name="mini_map_btn" tool_tip="Mostra/oculta o Mini Mapa"/> + <bottomtray_button label="Mini Mapa" name="mini_map_btn" tool_tip="Mostra/oculta o Mini Mapa"/> </layout_panel> <layout_panel name="im_well_panel"> <chiclet_im_well name="im_well"> diff --git a/indra/newview/skins/default/xui/pt/panel_classified_info.xml b/indra/newview/skins/default/xui/pt/panel_classified_info.xml index 191c005b1a5287cae7217b7a21e3a90c63677d1a..73bfe7444e72462077335c177bae67f60d980034 100644 --- a/indra/newview/skins/default/xui/pt/panel_classified_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_classified_info.xml @@ -46,8 +46,16 @@ </panel> </scroll_container> <panel name="buttons"> - <button label="Teletransportar" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Editar" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teletransportar" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml index f6fb22359964f4a0d939c7005b35cf02354baceb..23e00bfc3adad2faf5b6e1bddc54bb47763e6deb 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_classified.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_classified.xml @@ -36,13 +36,19 @@ <icons_combo_box.item label="Moderado" name="mature_ci" value="Adulto"/> <icons_combo_box.item label="Público geral" name="pg_ci" value="Adequado para menores"/> </icons_combo_box> + <check_box label="Renovação automática semanal" name="auto_renew"/> <text name="price_for_listing_label" value="Preço do anúncio:"/> <spinner label="L$" name="price_for_listing" tool_tip="Preço do anúncio" value="50"/> - <check_box label="Renovação automática semanal" name="auto_renew"/> </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="[LABEL]" name="save_changes_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="[LABEL]" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml index 96a294bc28ebe820534e4b1c4d33c0f214bf1636..432affcf09a19cf98be76c8fcf2aecb0d143611a 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml @@ -25,7 +25,13 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Salvar destaque" name="save_changes_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Salvar destaque" name="save_changes_btn"/> + </layout_panel> + <layout_panel name="layout_panel1"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml index c9e5513424402272f1dea886c34873db0f6f394c..e82c03845be122ec6f3be1b5aa8b6b8540628646 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_profile.xml @@ -45,7 +45,13 @@ </panel> </scroll_container> <panel name="profile_me_buttons_panel"> - <button label="Salvar alterações" name="save_btn"/> - <button label="Cancelar" name="cancel_btn"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_changes_btn_lp"> + <button label="Salvar alterações" name="save_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml index 9890d26d35dd3059a94f8d0a8bbf03ac82c5a1e4..679bb524b44f648986862e3f291cd5950af81433 100644 --- a/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml +++ b/indra/newview/skins/default/xui/pt/panel_edit_wearable.xml @@ -102,7 +102,13 @@ <icon name="female_icon" tool_tip="Feminino"/> </panel> <panel name="button_panel"> - <button label="Salvar como" name="save_as_button"/> - <button label="Desfazer mudanças" name="revert_button"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="save_as_btn_lp"> + <button label="Salvar como" name="save_as_button"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Desfazer mudanças" name="revert_button"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_friends.xml b/indra/newview/skins/default/xui/pt/panel_friends.xml deleted file mode 100644 index 34073f9ce1c9589227d213e5fb5463130b5cc352..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_friends.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="friends"> - <string name="Multiple"> - Diversos amigos - </string> - <scroll_list name="friend_list" tool_tip="Aperte shift ou control enquanto clica para selecionar múltiplos amigos"> - <column name="icon_online_status" tool_tip="Status Online"/> - <column label="Nome" name="friend_name" tool_tip="Nome"/> - <column name="icon_visible_online" tool_tip="Amigo pode ver quando você está online"/> - <column name="icon_visible_map" tool_tip="Amigo pode localizá-lo no mapa"/> - <column name="icon_edit_mine" tool_tip="Amigo pode editar, apagar ou pegar seus objetos"/> - <column name="icon_edit_theirs" tool_tip="Você pode editar os objetos deste amigo"/> - </scroll_list> - <button label="MI/Chamar" name="im_btn" tool_tip="Abrir sessão de Mensagem Instantânea" width="86"/> - <button label="Perfil" name="profile_btn" tool_tip="Mostrar foto, grupos e outras informações" width="86"/> - <button label="Teletransportar" name="offer_teleport_btn" tool_tip="Oferecer a este amigo o teletransporte para sua localização atual" width="86"/> - <button label="Pagar" name="pay_btn" tool_tip="Dar Linden dólares (L$) a este amigo" width="86"/> - <button label="Tirar" name="remove_btn" tool_tip="Remover esta pessoa de sua lista de amigos" width="86"/> - <button label="Adicionar" name="add_btn" tool_tip="Oferecer amizade para um residente" width="86"/> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml index 29d757346cccee4b7f65e5bd718837f38629ae77..30c825723b49fc103fca53fa9ab854cab2a56515 100644 --- a/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/pt/panel_group_info_sidetray.xml @@ -13,7 +13,7 @@ Grátis </panel.string> <panel name="group_info_top"> - <text name="group_name" value="Carregando..."/> + <text_editor name="group_name" value="Carregando..."/> <line_editor label="Digite o nome do grupo novo aqui" name="group_name_editor"/> </panel> <layout_stack name="layout"> @@ -25,9 +25,15 @@ <accordion_tab name="group_land_tab" title="Terrenos/Bens"/> </accordion> </layout_panel> - <layout_panel name="button_row"> + </layout_stack> + <layout_stack name="button_row_ls"> + <layout_panel name="btn_chat_lp"> <button label="Bate-papo" name="btn_chat"/> + </layout_panel> + <layout_panel name="call_btn_lp"> <button label="Ligar para o grupo" name="btn_call" tool_tip="Ligar para este grupo"/> + </layout_panel> + <layout_panel name="btn_apply_lp"> <button label="Salvar" label_selected="Salvar" name="btn_apply"/> <button label="Criar grupo" name="btn_create" tool_tip="Criar um grupo novo"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/pt/panel_groups.xml b/indra/newview/skins/default/xui/pt/panel_groups.xml deleted file mode 100644 index 0aea0d53dd90f4cf57cee63672b94686eacc68bd..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_groups.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel name="groups"> - <text name="groupdesc" width="268"> - Seu grupo ativo atual está em negrito. - </text> - <text name="groupcount" width="300"> - Você pertence a [COUNT] grupos (máximo [MAX]). - </text> - <button width="86" label="MI/Ligação" name="IM" tool_tip="Abrir sessão de Mensagem Instantânea"/> - <button width="86" label="Informações" name="Info"/> - <button width="86" label="Ativar" name="Activate"/> - <button width="86" label="Sair" name="Leave"/> - <button width="86" label="Criar..." name="Create"/> - <button width="86" label="Buscar..." name="Search..."/> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_landmarks.xml b/indra/newview/skins/default/xui/pt/panel_landmarks.xml index 3f357bcefe168295651c636077627c927e48c92f..49e12036010f60de88895fd03d953004ebf779b5 100644 --- a/indra/newview/skins/default/xui/pt/panel_landmarks.xml +++ b/indra/newview/skins/default/xui/pt/panel_landmarks.xml @@ -7,8 +7,16 @@ <accordion_tab name="tab_library" title="Biblioteca"/> </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> - <button name="add_btn" tool_tip="Adicionar marco"/> - <dnd_button name="trash_btn" tool_tip="Excluir marco selecionado"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Adicionar marco"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Excluir marco selecionado"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_my_profile.xml b/indra/newview/skins/default/xui/pt/panel_my_profile.xml index b1ca318addb3c3efc2bdd3ae9bc46725db356994..1a28f61c2da5e1cf717d5db13416f1a20554cda0 100644 --- a/indra/newview/skins/default/xui/pt/panel_my_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_my_profile.xml @@ -27,9 +27,8 @@ </panel> </scroll_container> </layout_panel> - <layout_panel name="profile_me_buttons_panel"> - <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/> - <button label="Editar aparência" name="edit_appearance_btn" tool_tip="Criar/editar aparência: fÃsico, roupas, etc."/> - </layout_panel> </layout_stack> + <panel name="profile_me_buttons_panel"> + <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml b/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml deleted file mode 100644 index bdbf29e70bc3e20db55e548df60a1440d5df5c4e..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_nearby_chat.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<!-- All our XML is utf-8 encoded. --> -<panel name="nearby_chat"> - <panel name="chat_caption"> - <text name="sender_name"> - Bate-papo local - </text> - </panel> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_notes.xml b/indra/newview/skins/default/xui/pt/panel_notes.xml index 9aa842d9a5c5624b3c1032c833ed63c9f666078a..c15e838b34f34ecfbd99d3c0b1301e822279db72 100644 --- a/indra/newview/skins/default/xui/pt/panel_notes.xml +++ b/indra/newview/skins/default/xui/pt/panel_notes.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Anotações e Privacidade" name="panel_notes"> <layout_stack name="layout"> - <panel name="notes_stack"> + <layout_panel name="notes_stack"> <scroll_container name="profile_scroll"> <panel name="profile_scroll_panel"> <text name="status_message" value="Minhas anotações privadas:"/> @@ -11,13 +11,25 @@ <check_box label="Pegar, editar ou excluir objetos meus" name="objects_check"/> </panel> </scroll_container> - </panel> - <panel name="notes_buttons_panel"> - <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/> - <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/> - <button label="Ligar" name="call" tool_tip="Ligar para este residente"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/> - <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> - </panel> + </layout_panel> + <layout_panel name="notes_buttons_panel"> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Ligar" name="call" tool_tip="Ligar para este residente"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> + </layout_panel> + </layout_stack> + </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_online_status.xml b/indra/newview/skins/default/xui/pt/panel_online_status.xml deleted file mode 100644 index fdc489f375ec6eabd344b633f4fb6eb00c3ccef3..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_online_status.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="friend_online_status" name="friend_online_status"/> diff --git a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml index 12c57411db09f3babf536c8a6e07ecd853067163..eb23f5c079215e9a9e3db8541dcc9dcf4a9b076d 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfit_edit.xml @@ -45,7 +45,13 @@ <button name="shop_btn_2" tool_tip="Visite o SL Marketplace. Ou selecione algum artigo do seu look e clique aqui para ver outros artigos parecidos"/> </panel> <panel name="save_revert_button_bar"> - <button label="Salvar" name="save_btn"/> - <button label="Desfazer mudanças" name="revert_btn" tool_tip="Voltar à versão salva anterior"/> + <layout_stack name="button_bar_ls"> + <layout_panel name="save_btn_lp"> + <button label="Salvar" name="save_btn"/> + </layout_panel> + <layout_panel name="revert_btn_lp"> + <button label="Desfazer mudanças" name="revert_btn" tool_tip="Voltar à versão salva anterior"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml index 96f4d60957f7fe2b800a36c58343be0e73fd24ca..816a9bc46efa19d7d98cd873564bef613a4c7318 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_inventory.xml @@ -11,7 +11,13 @@ <panel label="EM USO" name="cof_tab"/> </tab_container> <panel name="bottom_panel"> - <button label="Salvar como" name="save_btn"/> - <button label="Vestir" name="wear_btn" tool_tip="Vestir look selecionado"/> + <layout_stack name="bottom_panel_ls"> + <layout_panel name="save_btn_lp"> + <button label="Salvar como" name="save_btn"/> + </layout_panel> + <layout_panel name="wear_btn_lp"> + <button label="Vestir" name="wear_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml index efeea89fa9744241156e39eb9c989f10962dec54..e02e3998eb01c54a8a190a0e11630ed83d5bf72d 100644 --- a/indra/newview/skins/default/xui/pt/panel_people.xml +++ b/indra/newview/skins/default/xui/pt/panel_people.xml @@ -32,9 +32,17 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa- <accordion_tab name="tab_all" title="Todos"/> </accordion> <panel label="bottom_panel" name="bottom_panel"> - <button name="friends_viewsort_btn" tool_tip="Opções"/> - <button name="add_btn" tool_tip="Oferecer amizade para um residente"/> - <button name="del_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/> + <layout_stack name="bottom_panel"> + <layout_panel name="options_gear_btn_panel"> + <button name="friends_viewsort_btn" tool_tip="Mostrar opções adicionais"/> + </layout_panel> + <layout_panel name="add_btn_panel"> + <button name="add_btn" tool_tip="Oferecer amizade para um residente"/> + </layout_panel> + <layout_panel name="trash_btn_panel"> + <dnd_button name="trash_btn" tool_tip="Remover a pessoa selecionada da sua lista de amigos"/> + </layout_panel> + </layout_stack> </panel> </panel> <panel label="MEUS GRUPOS" name="groups_panel"> @@ -52,13 +60,33 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa- </panel> </tab_container> <panel name="button_bar"> - <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes" width="50"/> - <button label="MI" name="im_btn" tool_tip="Iniciar MI" width="24"/> - <button label="Chamada" name="call_btn" tool_tip="Ligar para este residente" width="61"/> - <button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário" width="82"/> - <button label="Teletransporte" name="teleport_btn" tool_tip="Oferecer teletransporte" width="86"/> - <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir informação de grupo"/> - <button label="Bate-papo de grupo" name="chat_btn" tool_tip="Iniciar bate-papo"/> - <button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="view_profile_btn_lp"> + <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="group_info_btn_lp"> + <button label="Perfil do grupo" name="group_info_btn" tool_tip="Exibir dados do grupo"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Bate-papo de grupo" name="chat_btn" tool_tip="Nova sessão de bate-papo"/> + </layout_panel> + <layout_panel name="group_call_btn_lp"> + <button label="Ligar para o grupo" name="group_call_btn" tool_tip="Ligar para este grupo"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_pick_info.xml b/indra/newview/skins/default/xui/pt/panel_pick_info.xml index 007965a8c9decfd55a5fdfd240a95d5811b2759f..caa140a245264684243a9f312a7d95bf5c8580e4 100644 --- a/indra/newview/skins/default/xui/pt/panel_pick_info.xml +++ b/indra/newview/skins/default/xui/pt/panel_pick_info.xml @@ -3,14 +3,22 @@ <text name="title" value="Detalhes do destaque"/> <scroll_container name="profile_scroll"> <panel name="scroll_content_panel"> - <text name="pick_name" value="[NAME]"/> - <text name="pick_location" value="[carregando...]"/> - <text name="pick_desc" value="[descrição]"/> + <text_editor name="pick_name" value="[NAME]"/> + <text_editor name="pick_location" value="[carregando...]"/> + <text_editor name="pick_desc" value="[descrição]"/> </panel> </scroll_container> <panel name="buttons"> - <button label="Teletransportar" name="teleport_btn"/> - <button label="Mapa" name="show_on_map_btn"/> - <button label="Editar" name="edit_btn"/> + <layout_stack name="layout_stack1"> + <layout_panel name="layout_panel1"> + <button label="Teletransportar" name="teleport_btn"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn"/> + </layout_panel> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_picks.xml b/indra/newview/skins/default/xui/pt/panel_picks.xml index 453954bc3e5758acac10e11577c51e4d2bc84edc..2ff1eed62415ef9909adfa9833b28847fea22a66 100644 --- a/indra/newview/skins/default/xui/pt/panel_picks.xml +++ b/indra/newview/skins/default/xui/pt/panel_picks.xml @@ -2,19 +2,28 @@ <panel label="Destaques" name="panel_picks"> <string name="no_picks" value="Sem destaques"/> <string name="no_classifieds" value="Sem classificados"/> - <text name="empty_picks_panel_text"> - Não ha nenhum destaque/ classificado aqui - </text> <accordion name="accordion"> <accordion_tab name="tab_picks" title="Destaques"/> <accordion_tab name="tab_classifieds" title="Classificados"/> </accordion> <panel label="bottom_panel" name="edit_panel"> - <button name="new_btn" tool_tip="Criar um novo destaque ou classificado na localização atual"/> + <layout_stack name="edit_panel_ls"> + <layout_panel name="gear_menu_btn"> + <button name="new_btn" tool_tip="Criar um novo destaque ou classificado na localização atual"/> + </layout_panel> + </layout_stack> </panel> <panel name="buttons_cucks"> - <button label="Info" name="info_btn" tool_tip="Exibir informação de destaque"/> - <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área correspondente"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir a área correspondente no Mapa Mundi"/> + <layout_stack name="buttons_cucks_ls"> + <layout_panel name="info_btn_lp"> + <button label="Info" name="info_btn" tool_tip="Exibir dados do destaque"/> + </layout_panel> + <layout_panel name="teleport_btn_lp"> + <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área correspondente"/> + </layout_panel> + <layout_panel name="show_on_map_btn_lp"> + <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir a área correspondente no Mapa Mundi"/> + </layout_panel> + </layout_stack> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml index 5f2c56ab8c429a2a2a7c4bdf3aba3dfa04ac0cfd..2e443bc0572255d8bee3e0f94bd126c2c4bcd792 100644 --- a/indra/newview/skins/default/xui/pt/panel_places.xml +++ b/indra/newview/skins/default/xui/pt/panel_places.xml @@ -4,13 +4,45 @@ <string name="teleport_history_tab_title" value="TELETRANSPORTES"/> <filter_editor label="Filtrar meus lugares" name="Filter"/> <panel name="button_panel"> - <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> - <button label="Mapa" name="map_btn" tool_tip="Mostrar a área no Mapa Múndi"/> - <button label="Editar" name="edit_btn" tool_tip="Editar dados do marco"/> - <button label="â–¼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> - <button label="Salvar" name="save_btn"/> - <button label="Cancelar" name="cancel_btn"/> - <button label="Fechar" name="close_btn"/> - <button label="Perfil" name="profile_btn" tool_tip="Mostrar perfil do lugar"/> + <layout_stack name="bottom_bar_ls0"> + <layout_panel name="lp1"> + <layout_stack name="bottom_bar_ls1"> + <layout_panel name="teleport_btn_lp"> + <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Mapa" name="map_btn" tool_tip="Exibir a área correspondente no Mapa Mundi"/> + </layout_panel> + </layout_stack> + </layout_panel> + <layout_panel name="lp2"> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="edit_btn_lp"> + <button label="Editar" name="edit_btn" tool_tip="Editar dados do marco"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls3"> + <layout_panel name="profile_btn_lp"> + <button label="Perfil" name="profile_btn" tool_tip="Mostrar perfil do lugar"/> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_close_ls3"> + <layout_panel name="close_btn_lp"> + <button label="Fechar" name="close_btn"/> + </layout_panel> + </layout_stack> + </layout_panel> + </layout_stack> + <layout_stack name="bottom_bar_ls2"> + <layout_panel name="save_btn_lp"> + <button label="Salvar" name="save_btn"/> + </layout_panel> + <layout_panel name="cancel_btn_lp"> + <button label="Cancelar" name="cancel_btn"/> + </layout_panel> + </layout_stack> </panel> </panel> 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 1ec674e2e297b90b3825936618a61f311b43a0c1..ea15b906282df5c96378ec6af3535b24da5d055b 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_chat.xml @@ -56,27 +56,27 @@ <radio_item label="Janelas separadas" name="radio" value="0"/> <radio_item label="Guias" name="radio2" value="1"/> </radio_group> - <check_box label="Traduzir Chat" name="translate_chat_checkbox" /> + <check_box label="Traduzir bate-papo automaticamente (via Google)" name="translate_chat_checkbox"/> <text name="translate_language_text"> - Chat LÃngua: + Traduzir bate-papo para: </text> <combo_box name="translate_language_combobox"> - <combo_box.item name="System Default Language" label="Padrão do Sistema" /> - <combo_box.item name="English" label="English (Inglês)" /> - <combo_box.item name="Danish" label="Dansk (Dinamarquês)" /> - <combo_box.item name="German" label="Deutsch (Alemão)" /> - <combo_box.item name="Spanish" label="Español (Espanhol)" /> - <combo_box.item name="French" label="Français (Francês)" /> - <combo_box.item name="Italian" label="Italiano" /> - <combo_box.item name="Hungarian" label="Magyar (Húngaro)" /> - <combo_box.item name="Dutch" label="Nederlands (Holandês)" /> - <combo_box.item name="Polish" label="Polski (Polonês)" /> - <combo_box.item name="Portugese" label="Português" /> - <combo_box.item name="Russian" label="РуÑÑкий (Russo)" /> - <combo_box.item name="Turkish" label="Türkçe (Turco)" /> - <combo_box.item name="Ukrainian" label="УкраїнÑька (Ucraniano)" /> - <combo_box.item name="Chinese" label="ä¸æ–‡ (简体) (Chinês)" /> - <combo_box.item name="Japanese" label="日本語 (Japonês)" /> - <combo_box.item name="Korean" label="í•œêµì–´ (Coreano)" /> + <combo_box.item label="Padrão" name="System Default Language"/> + <combo_box.item label="English (Inglês)" name="English"/> + <combo_box.item label="Dansk (Dinamarquês)" name="Danish"/> + <combo_box.item label="Deutsch (Alemão)" name="German"/> + <combo_box.item label="Español (Espanhol)" name="Spanish"/> + <combo_box.item label="Français (Francês)" name="French"/> + <combo_box.item label="Italiano (Italiano)" name="Italian"/> + <combo_box.item label="Magyar (Húngaro)" name="Hungarian"/> + <combo_box.item label="Nederlands (Holandês)" name="Dutch"/> + <combo_box.item label="Polski (Polonês)" name="Polish"/> + <combo_box.item label="Português (Português)" name="Portugese"/> + <combo_box.item label="РуÑÑкий (Russo)" name="Russian"/> + <combo_box.item label="Türkçe (Turco)" name="Turkish"/> + <combo_box.item label="УкраїнÑька (Ucraniano)" name="Ukrainian"/> + <combo_box.item label="ä¸æ–‡ (简体) (Chinês)" name="Chinese"/> + <combo_box.item label="日本語 (Japonês)" name="Japanese"/> + <combo_box.item label="í•œêµì–´ (Coreano)" name="Korean"/> </combo_box> </panel> 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 8a34897c9b38b1a8dbd121ce0007677fee2dfdb1..aefee32d447783895f8d62149e982f3ea6ffd6e3 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_general.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_general.xml @@ -13,7 +13,7 @@ <combo_box.item label="Italiano - Beta" name="Italian"/> <combo_box.item label="Nederlands (Holandês) - Beta" name="Dutch"/> <combo_box.item label="Polski (Polonês) - Beta" name="Polish"/> - <combo_box.item label="Português - Beta" name="Portugese"/> + <combo_box.item label="Português (Português) - Beta" name="Portugese"/> <combo_box.item label="日本語 (Japonês) - Beta" name="(Japanese)"/> </combo_box> <text name="language_textbox2"> 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 c24cc96d3b88460497c3095745615d03269b19a8..912eea13b8a183cd1039a4d073e70de89d9bf606 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_graphics1.xml @@ -29,22 +29,16 @@ rápido <check_box initial_value="true" label="Bump de Mapeamento e Brilho" name="BumpShiny"/> <check_box initial_value="true" label="Sombreadores básicos" name="BasicShaders" tool_tip="Desabilitar esta opção poderá impedir que alguns drivers de placa de vÃdeo a travem."/> <check_box initial_value="true" label="Sombreadores Atmosféricos" name="WindLightUseAtmosShaders"/> - <check_box initial_value="true" label="Reflexos de Ãgua" name="Reflections"/> - <text name="ReflectionDetailText"> - Detalhes de Reflexão: + <text name="reflection_label"> + Reflexo de água: </text> - <radio_group name="ReflectionDetailRadio"> - <radio_item label="Terreno e árvores" name="0"/> - <radio_item label="Todos os objetos estáticos" name="1"/> - <radio_item label="Todos os avatares e Objetos" name="2"/> - <radio_item label="Tudo" name="3"/> - </radio_group> - <text name="AvatarRenderingText"> - Renderização de Avatar: - </text> - <check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/> - <check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/> - <check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/> + <combo_box initial_value="true" label="Reflexos de Ãgua" name="Reflections"> + <combo_box.item label="MÃnimo" name="0"/> + <combo_box.item label="Terreno e árvores" name="1"/> + <combo_box.item label="Objetos estáticos" name="2"/> + <combo_box.item label="Avatares e objetos" name="3"/> + <combo_box.item label="Tudo" name="4"/> + </combo_box> <slider label="Distancia de desenho:" name="DrawDistance"/> <text name="DrawDistanceMeterText2"> m @@ -82,13 +76,12 @@ rápido <text name="SkyMeshDetailText"> Baixo </text> - <text name="LightingDetailText"> - Detalhes de Iluminação: + <text name="AvatarRenderingText"> + Renderização de Avatar: </text> - <radio_group name="LightingDetailRadio"> - <radio_item label="Sol e Lua apenas" name="SunMoon" value="0"/> - <radio_item label="Luzes locais nas proximidades" name="LocalLights" value="1"/> - </radio_group> + <check_box initial_value="true" label="Atributos do Avatar" name="AvatarImpostors"/> + <check_box initial_value="true" label="Melhoria de Hardware" name="AvatarVertexProgram"/> + <check_box initial_value="true" label="Vestimenta do Avatar" name="AvatarCloth"/> <text name="TerrainDetailText"> Detalhe do Terreno: </text> @@ -96,6 +89,7 @@ rápido <radio_item label="Baixo" name="0"/> <radio_item label="Alto" name="2"/> </radio_group> + --> </panel> <button label="Aplicar" label_selected="Aplicar" name="Apply"/> <button label="Redefinir" left="110" name="Defaults"/> diff --git a/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml index a1254b4da073c9caa0de2112b29af103647bec07..9e07b6772f26c149a930691e70e7ee0d2902efcd 100644 --- a/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/pt/panel_prim_media_controls.xml @@ -13,9 +13,9 @@ 50 </string> <layout_stack name="progress_indicator_area"> - <panel name="media_progress_indicator"> + <layout_panel name="media_progress_indicator"> <progress_bar name="media_progress_bar" tool_tip="Carregando mÃdia"/> - </panel> + </layout_panel> </layout_stack> <layout_stack name="media_controls"> <layout_panel name="back"> diff --git a/indra/newview/skins/default/xui/pt/panel_profile.xml b/indra/newview/skins/default/xui/pt/panel_profile.xml index 805e3aaebd993562f549b565706debc62343ba12..e4200ae5dacac964b1fd2e3ad3f688f751b37a01 100644 --- a/indra/newview/skins/default/xui/pt/panel_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_profile.xml @@ -36,17 +36,29 @@ </panel> </scroll_container> </layout_panel> + </layout_stack> + <layout_stack name="layout_verb_buttons"> <layout_panel name="profile_buttons_panel"> - <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/> - <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/> - <button label="Ligar" name="call" tool_tip="Ligar para este residente"/> - <button label="Mapa" name="show_on_map_btn" tool_tip="Exibir o residente no mapa"/> - <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> - <button label="â–¼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/> + <layout_stack name="bottom_bar_ls"> + <layout_panel name="add_friend_btn_lp"> + <button label="Adicionar amigo" name="add_friend" tool_tip="Oferecer amizade ao residente"/> + </layout_panel> + <layout_panel name="im_btn_lp"> + <button label="MI" name="im" tool_tip="Abrir sessão de mensagem instantânea"/> + </layout_panel> + <layout_panel name="call_btn_lp"> + <button label="Ligar" name="call" tool_tip="Ligar para este residente"/> + </layout_panel> + <layout_panel name="chat_btn_lp"> + <button label="Teletransportar" name="teleport" tool_tip="Oferecer teletransporte"/> + </layout_panel> + <layout_panel name="overflow_btn_lp"> + <button label="â–¼" name="overflow_btn" tool_tip="Pagar ou compartilhar inventário com o residente"/> + </layout_panel> + </layout_stack> </layout_panel> <layout_panel name="profile_me_buttons_panel"> <button label="Editar perfil" name="edit_profile_btn" tool_tip="Editar dados pessoais"/> - <button label="Editar aparência" name="edit_appearance_btn" tool_tip="Criar/editar aparência: fÃsico, roupas, etc."/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml b/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml deleted file mode 100644 index 534b2826af0fad4c338f86e485a9fcb5558b2448..0000000000000000000000000000000000000000 --- a/indra/newview/skins/default/xui/pt/panel_region_general_layout.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes"?> -<panel label="Região" name="General"> - <text name="region_text_lbl"> - Região: - </text> - <text name="region_text"> - (Desconhecido) - </text> - <text name="version_channel_text_lbl"> - Versão: - </text> - <text name="version_channel_text"> - (Desconhecido) - </text> - <text name="region_type_lbl"> - Tipo: - </text> - <text name="region_type"> - (Desconhecido) - </text> - <check_box label="Bloquear terraplanagens" name="block_terraform_check"/> - <check_box label="Bloquear voos" name="block_fly_check"/> - <check_box label="Permitir danos" name="allow_damage_check"/> - <check_box label="Limitar empurrões" name="restrict_pushobject"/> - <check_box label="Permitir revenda de terrenos" name="allow_land_resell_check"/> - <check_box label="Permitir união e divisão de terrenos" name="allow_parcel_changes_check"/> - <check_box label="Não mostrar nos resultados de pesquisa" name="block_parcel_search_check" tool_tip="Mostrar esta região e lotes nos resultados de pesquisa"/> - <spinner label="Limite do agente" name="agent_limit_spin"/> - <spinner label="Bônus do objeto" name="object_bonus_spin"/> - <text label="NÃvel de maturidade" name="access_text"> - Classificação: - </text> - <combo_box label="Moderado" name="access_combo"> - <combo_box.item label="Público adulto" name="Adult"/> - <combo_box.item label="Moderado" name="Mature"/> - <combo_box.item label="Geral" name="PG"/> - </combo_box> - <button label="Aplicar" name="apply_btn"/> - <button label="Teletransportar um residente para inÃcio..." name="kick_btn"/> - <button label="Teletransportar todos para inÃcio..." name="kick_all_btn"/> - <button label="Enviar mensagem para região..." name="im_btn"/> - <button label="Gerenciar telehub..." name="manage_telehub_btn"/> -</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml index 7c06119901df8155bb18414fe05449454397dd7a..09444a55356daa0efdf082e911f693d56956edf9 100644 --- a/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/pt/panel_side_tray_tab_caption.xml @@ -1,5 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="sidetray_tab_panel"> <text name="sidetray_tab_title" value="Bandeja lateral"/> + <button name="undock" tool_tip="Soltar janela"/> + <button name="dock" tool_tip="Ancorar janela"/> <button name="show_help" tool_tip="Mostrar ajuda"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index e382da258f40e4df1d00ece29707e3d764f32557..11ac6c106a3dbfe9693a5e87b8e3f144a127144a 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -2,12 +2,20 @@ <panel label="Coisas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> <panel name="button_panel"> - <button label="Perfil" name="info_btn" tool_tip="Mostrar perfil do objeto"/> - <button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/> - <button label="Comprar" name="shop_btn" tool_tip="Abrir página do Marketplace"/> - <button label="Vestir" name="wear_btn" tool_tip="Vestir visual selecionado"/> - <button label="Tocar" name="play_btn"/> - <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> + <layout_stack name="button_panel_ls"> + <layout_panel name="info_btn_lp"> + <button label="Perfil" name="info_btn" tool_tip="Mostrar perfil do objeto"/> + </layout_panel> + <layout_panel name="share_btn_lp"> + <button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/> + </layout_panel> + <layout_panel name="shop_btn_lp"> + <button label="Comprar" name="shop_btn" tool_tip="Abrir página do Marketplace"/> + <button label="Vestir" name="wear_btn" tool_tip="Vestir visual selecionado"/> + <button label="Tocar" name="play_btn"/> + <button label="Teletransportar" name="teleport_btn" tool_tip="Teletransportar para a área selecionada"/> + </layout_panel> + </layout_stack> </panel> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml index 5af3a73d3d3061a521c31d57c51532b7d38bbf2f..e6370ea830d8934ca50270f4529823c555620012 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_item_info.xml @@ -23,54 +23,53 @@ </panel.string> <text name="title" value="Perfil do item"/> <text name="origin" value="(Inventário)"/> - <panel label="" name="item_profile"> - <text name="LabelItemNameTitle"> - Nome: - </text> - <text name="LabelItemDescTitle"> - Descrição: - </text> - <text name="LabelCreatorTitle"> - Criador: - </text> - <button label="Perfil..." name="BtnCreator"/> - <text name="LabelOwnerTitle"> - Proprietário: - </text> - <button label="Perfil..." name="BtnOwner"/> - <text name="LabelAcquiredTitle"> - Adquirido: - </text> - <text name="LabelAcquiredDate"/> - <panel name="perms_inv"> - <text name="perm_modify"> - Você pode: + <scroll_container name="item_profile_scroll"> + <panel label="" name="item_profile"> + <text name="LabelItemNameTitle"> + Nome: </text> - <check_box label="Modificar" name="CheckOwnerModify"/> - <check_box label="Copiar" name="CheckOwnerCopy"/> - <check_box label="Transferir" name="CheckOwnerTransfer"/> - <text name="AnyoneLabel"> - Todos: + <text name="LabelItemDescTitle"> + Descrição: </text> - <check_box label="Copiar" name="CheckEveryoneCopy"/> - <text name="GroupLabel"> - Grupo: + <text name="LabelCreatorTitle"> + Criador: </text> - <check_box label="Compartilhar" name="CheckShareWithGroup" tool_tip="Permitir que todos os membros do grupo tenham o seu nÃvel de modificação para este objeto. Faça uma doação para ativar restrições de função."/> - <text name="NextOwnerLabel"> - Próximo proprietário: + <text name="LabelOwnerTitle"> + Proprietário: </text> - <check_box label="Modificar" name="CheckNextOwnerModify"/> - <check_box label="Copiar" name="CheckNextOwnerCopy"/> - <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> + <text name="LabelAcquiredTitle"> + Adquirido: + </text> + <panel name="perms_inv"> + <text name="perm_modify"> + Você pode: + </text> + <check_box label="Modificar" name="CheckOwnerModify"/> + <check_box label="Copiar" name="CheckOwnerCopy"/> + <check_box label="Transferir" name="CheckOwnerTransfer"/> + <text name="AnyoneLabel"> + Todos: + </text> + <check_box label="Copiar" name="CheckEveryoneCopy"/> + <text name="GroupLabel"> + Grupo: + </text> + <check_box label="Compartilhar" name="CheckShareWithGroup" tool_tip="Permitir que todos os membros do grupo tenhas suas permissões de modificação para este objeto. Faça uma doação para ativar restrições de função."/> + <text name="NextOwnerLabel"> + Próximo proprietário: + </text> + <check_box label="Modificar" name="CheckNextOwnerModify"/> + <check_box label="Copiar" name="CheckNextOwnerCopy"/> + <check_box label="Transferir" name="CheckNextOwnerTransfer" tool_tip="O próximo dono poderá revender ou dar este objeto"/> + </panel> + <check_box label="À venda" name="CheckPurchase"/> + <combo_box name="combobox sale copy"> + <combo_box.item label="Copiar" name="Copy"/> + <combo_box.item label="Original" name="Original"/> + </combo_box> + <spinner label="Preço: L$" name="Edit Cost"/> </panel> - <check_box label="À venda" name="CheckPurchase"/> - <combo_box name="combobox sale copy"> - <combo_box.item label="Copiar" name="Copy"/> - <combo_box.item label="Original" name="Original"/> - </combo_box> - <spinner label="Preço: L$" name="Edit Cost"/> - </panel> + </scroll_container> <panel name="button_panel"> <button label="Cancelar" name="cancel_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index b6ecc9347bf0a9113334f61055f9544f8732763b..5d87a855efa3007d4cd3530d6e2f9e07c9f21c8d 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1267,6 +1267,9 @@ <string name="Right Pec"> Peitoral D </string> + <string name="Invalid Attachment"> + Ponto de encaixe inválido + </string> <string name="YearsMonthsOld"> [AGEYEARS] [AGEMONTHS] de idade </string> @@ -1644,9 +1647,6 @@ <string name="ATTACH_HUD_BOTTOM_RIGHT"> HUD direito inferior </string> - <string name="Bad attachment point"> - Ponto de encaixe inválido - </string> <string name="CursorPos"> Linha [LINE], Coluna [COLUMN] </string> @@ -1662,12 +1662,6 @@ <string name="BusyModeResponseDefault"> O residente para o qual escreveu está no modo 'ocupado', ou seja, ele prefere não receber nada no momento. Sua mensagem será exibida como uma MI mais tarde. </string> - <string name="NoOutfits"> - Você ainda não tem nenhum look. Tente encontrar um na [secondlife:///app/search/groups Busca]. - </string> - <string name="NoOutfitsTabsMatched"> - Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/people/[SEARCH_TERM] Busca]. - </string> <string name="MuteByName"> (por nome) </string> @@ -1822,6 +1816,12 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh <string name="accel-win-shift"> Shift+ </string> + <string name="Esc"> + Esc + </string> + <string name="Home"> + InÃcio + </string> <string name="FileSaved"> Arquivo salvo </string> @@ -3437,6 +3437,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="IM_moderator_label"> (Moderador) </string> + <string name="Saved_message"> + (Salvo em [LONG_TIMESTAMP]) + </string> <string name="answered_call"> Ligação atendida </string> @@ -3458,6 +3461,12 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="hang_up-im"> Saiu da ligação de voz </string> + <string name="conference-title-incoming"> + Conversa com [AGENT_NAME] + </string> + <string name="no_session_message"> + (Sessão de MI inexistente) + </string> <string name="only_user_message"> Você é o único usuário desta sessão. </string> @@ -3842,4 +3851,13 @@ Denunciar abuso <string name="Chat"> Bate-papo </string> + <string name="DeleteItems"> + Excluir itens selecionados? + </string> + <string name="DeleteItem"> + Excluir item selecionado? + </string> + <string name="EmptyOutfitText"> + Este look não possui nenhuma peça + </string> </strings> diff --git a/indra/newview/tests/lllogininstance_test.cpp b/indra/newview/tests/lllogininstance_test.cpp index 55823fc386f420c8f96545f92dca22a914df80b9..db50b896204988faff21ca5d606e97d086bcc715 100644 --- a/indra/newview/tests/lllogininstance_test.cpp +++ b/indra/newview/tests/lllogininstance_test.cpp @@ -62,6 +62,12 @@ LLSLURL LLStartUp::sStartSLURL; static std::string gLoginURI; static LLSD gLoginCreds; static bool gDisconnectCalled = false; + +#include "../llviewerwindow.h" +void LLViewerWindow::setShowProgress(BOOL show) {} + +LLViewerWindow* gViewerWindow; + class LLLogin::Impl { }; @@ -107,6 +113,8 @@ void LLGridManager::addGrid(LLSD& grid_data) { } LLGridManager::LLGridManager() +: + mIsInProductionGrid(false) { } diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 40ac019721ff1b3104d728f20ab4a8e5a8d8dc18..873fa23db8675b55c8e5cfca4c3311a9411fafee 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -954,6 +954,23 @@ mediaPanel* LLMediaPluginTest::findMediaPanel( LLPluginClassMedia* source ) return result; } +//////////////////////////////////////////////////////////////////////////////// +// +mediaPanel* LLMediaPluginTest::findMediaPanel( const std::string &target_name ) +{ + mediaPanel *result = NULL; + + for( int panel = 0; panel < (int)mMediaPanels.size(); ++panel ) + { + if ( mMediaPanels[ panel ]->mTarget == target_name ) + { + result = mMediaPanels[ panel ]; + } + } + + return result; +} + //////////////////////////////////////////////////////////////////////////////// // void LLMediaPluginTest::navigateToNewURI( std::string uri ) @@ -1566,7 +1583,7 @@ std::string LLMediaPluginTest::pluginNameFromMimeType( std::string& mime_type ) //////////////////////////////////////////////////////////////////////////////// // -void LLMediaPluginTest::addMediaPanel( std::string url ) +mediaPanel* LLMediaPluginTest::addMediaPanel( std::string url ) { // Get the plugin filename using the URL std::string mime_type = mimeTypeFromUrl( url ); @@ -1598,7 +1615,7 @@ void LLMediaPluginTest::addMediaPanel( std::string url ) if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) { std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return; + return NULL; } std::string user_data_path = std::string( cwd ) + "/"; #endif @@ -1668,6 +1685,8 @@ void LLMediaPluginTest::addMediaPanel( std::string url ) std::cout << "Adding new media panel for " << url << "(" << media_width << "x" << media_height << ") with index " << panel->mId << " - total panels = " << mMediaPanels.size() << std::endl; } + + return panel; } //////////////////////////////////////////////////////////////////////////////// @@ -1773,15 +1792,15 @@ void LLMediaPluginTest::updateMediaPanel( mediaPanel* panel ) //////////////////////////////////////////////////////////////////////////////// // -void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url ) +mediaPanel* LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url ) { // no media panels so we can't change anything - have to add if ( mMediaPanels.size() == 0 ) - return; + return NULL; // sanity check if ( ! panel ) - return; + return NULL; int index; for(index = 0; index < (int)mMediaPanels.size(); index++) @@ -1793,7 +1812,7 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url ) if(index >= (int)mMediaPanels.size()) { // panel isn't in mMediaPanels - return; + return NULL; } std::cout << "Replacing media panel with index " << panel->mId << std::endl; @@ -1835,7 +1854,7 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url ) if (NULL == getcwd( cwd, FILENAME_MAX - 1 )) { std::cerr << "Couldn't get cwd - probably too long - failing to init." << std::endl; - return; + return NULL; } std::string user_data_path = std::string( cwd ) + "/"; #endif @@ -1875,6 +1894,8 @@ void LLMediaPluginTest::replaceMediaPanel( mediaPanel* panel, std::string url ) // load and start the URL panel->mMediaSource->loadURI( url ); panel->mMediaSource->start(); + + return panel; } //////////////////////////////////////////////////////////////////////////////// @@ -2134,7 +2155,39 @@ void LLMediaPluginTest::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent e break; case MEDIA_EVENT_CLICK_LINK_HREF: - std::cerr << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, uri is " << self->getClickURL() << std::endl; + { + std::cerr << "Media event: MEDIA_EVENT_CLICK_LINK_HREF, uri is " << self->getClickURL() << ", target is " << self->getClickTarget() << std::endl; + // retrieve the event parameters + std::string url = self->getClickURL(); + std::string target = self->getClickTarget(); + + if(target == "_external") + { + // this should open in an external browser, but since this is a test app we don't care. + } + else if(target == "_blank") + { + // Create a new panel with the specified URL. + addMediaPanel(url); + } + else // other named target + { + mediaPanel *target_panel = findMediaPanel(target); + if(target_panel) + { + target_panel = replaceMediaPanel(target_panel, url); + } + else + { + target_panel = addMediaPanel(url); + } + + if(target_panel) + { + target_panel->mTarget = target; + } + } + } break; case MEDIA_EVENT_CLICK_LINK_NOFOLLOW: @@ -2148,6 +2201,25 @@ void LLMediaPluginTest::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent e case MEDIA_EVENT_PLUGIN_FAILED_LAUNCH: std::cerr << "Media event: MEDIA_EVENT_PLUGIN_FAILED_LAUNCH" << std::endl; break; + + case MEDIA_EVENT_CLOSE_REQUEST: + std::cerr << "Media event: MEDIA_EVENT_CLOSE_REQUEST" << std::endl; + break; + + case MEDIA_EVENT_PICK_FILE_REQUEST: + std::cerr << "Media event: MEDIA_EVENT_PICK_FILE_REQUEST" << std::endl; + // TODO: display an actual file picker + self->sendPickFileResponse("cake"); + break; + + case MEDIA_EVENT_GEOMETRY_CHANGE: + std::cerr << "Media event: MEDIA_EVENT_GEOMETRY_CHANGE, uuid is " << self->getClickUUID() + << ", x = " << self->getGeometryX() + << ", y = " << self->getGeometryY() + << ", width = " << self->getGeometryWidth() + << ", height = " << self->getGeometryHeight() + << std::endl; + break; } } diff --git a/indra/test_apps/llplugintest/llmediaplugintest.h b/indra/test_apps/llplugintest/llmediaplugintest.h index 8fa20b8d72a45e23d5229de68d3928ec4c8e6dc6..1f6f18e43c41aa8ed118b402f943798880d0aa7e 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.h +++ b/indra/test_apps/llplugintest/llmediaplugintest.h @@ -51,6 +51,7 @@ struct mediaPanel int mId; std::string mStartUrl; std::string mMimeType; + std::string mTarget; LLPluginClassMedia *mMediaSource; int mMediaWidth; int mMediaHeight; @@ -91,16 +92,17 @@ class LLMediaPluginTest : public LLPluginClassMediaOwner void draw( int draw_type ); void windowPosToTexturePos( int window_x, int window_y, int& media_x, int& media_y, int& id ); - void addMediaPanel( std::string url ); + mediaPanel* addMediaPanel( std::string url ); void updateMediaPanel( mediaPanel* panel ); void remMediaPanel( mediaPanel* panel ); - void replaceMediaPanel( mediaPanel* panel, std::string url ); + mediaPanel* replaceMediaPanel( mediaPanel* panel, std::string url ); void getRandomMediaSize( int& width, int& height, std::string mime_type ); void navigateToNewURI( std::string uri ); void initUrlHistory( std::string uri ); void selectPanelById( int id ); void selectPanel( mediaPanel* panel ); mediaPanel* findMediaPanel( LLPluginClassMedia* panel ); + mediaPanel* findMediaPanel( const std::string &target_name ); void makePickTexture( int id, GLuint* texture_handle, unsigned char** texture_pixels ); void makeChrome(); void resetView(); diff --git a/indra/viewer_components/login/CMakeLists.txt b/indra/viewer_components/login/CMakeLists.txt index fb65779eb7320a1866b4f9cb1756b7a8411a2bd5..fe64926da6c9cc03f47fe732788607ac83cc5f97 100644 --- a/indra/viewer_components/login/CMakeLists.txt +++ b/indra/viewer_components/login/CMakeLists.txt @@ -3,7 +3,9 @@ project(login) include(00-Common) -include(LLAddBuildTest) +if(LL_TESTS) + include(LLAddBuildTest) +endif(LL_TESTS) include(LLCommon) include(LLMath) include(LLXML) @@ -43,14 +45,16 @@ target_link_libraries(lllogin ${PTH_LIBRARIES} ) -SET(lllogin_TEST_SOURCE_FILES +if(LL_TESTS) + SET(lllogin_TEST_SOURCE_FILES + lllogin.cpp + ) + + set_source_files_properties( lllogin.cpp + PROPERTIES + LL_TEST_ADDITIONAL_LIBRARIES "${PTH_LIBRARIES}" ) -set_source_files_properties( - lllogin.cpp - PROPERTIES - LL_TEST_ADDITIONAL_LIBRARIES "${PTH_LIBRARIES}" - ) - -LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}") + LL_ADD_PROJECT_UNIT_TESTS(lllogin "${lllogin_TEST_SOURCE_FILES}") +endif(LL_TESTS) diff --git a/install.xml b/install.xml index 9c37b4bc1e8e2df134a2b73f9662338e765823b1..5a9d7041916c54e0c9831fc4684229ef34e14d4c 100644 --- a/install.xml +++ b/install.xml @@ -185,7 +185,7 @@ <key>copyright</key> <string>various</string> <key>description</key> - <string>A set of portable C++ libraries which provide a wide set of functionality. Used primarily for tokenization. </string> + <string>A set of portable C++ libraries which provide a wide set of functionality. </string> <key>license</key> <string>boost</string> <key>packages</key> @@ -981,23 +981,23 @@ anguage Infrstructure (CLI) international standard</string> <key>darwin</key> <map> <key>md5sum</key> - <string>becffca6bd8dcb239de284ea2a8b485b</string> + <string>34d9e4c93678a422cf80521bf0cd7628</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6+cookies-darwin-20100617.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-4.6-darwin-20100914.tar.bz2</uri> </map> <key>linux</key> <map> <key>md5sum</key> - <string>414d72dd59e3d83c96f0e1531360792e</string> + <string>5d743c93b970abe685b185de83001a6e</string> <key>url</key> - <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-20100618.tar.bz2</uri> + <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-linux-qt4.6-20100923.tar.bz2</uri> </map> <key>windows</key> <map> <key>md5sum</key> - <string>df1bdd683128e060d60e435f65d8f7e8</string> + <string>4b8412833c00f8cdaba26808f0ddb404</string> <key>url</key> - <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100617.tar.bz2</uri> + <uri>http://viewer-source-downloads.s3.amazonaws.com/install_pkgs/llqtwebkit-windows-qt4.6-20100916.tar.bz2</uri> </map> </map> </map> diff --git a/scripts/install.py b/scripts/install.py index 7368af0b37ffc76d419d3a4c4958607fe07aabf0..c2adf4d0a27ce79b9edfb4a28ea594141a13039b 100755 --- a/scripts/install.py +++ b/scripts/install.py @@ -84,18 +84,6 @@ def add_indra_lib_path(): from indra.base import llsd from indra.util import helpformatter -# *HACK: Necessary for python 2.3. Consider removing this code wart -# after etch has deployed everywhere. 2008-12-23 Phoenix -try: - sorted = sorted -except NameError: - def sorted(in_list): - "Return a list which is a sorted copy of in_list." - # Copy the source to be more functional and side-effect free. - out_list = copy.copy(in_list) - out_list.sort() - return out_list - class InstallFile(object): "This is just a handy way to throw around details on a file in memory." def __init__(self, pkgname, url, md5sum, cache_dir, platform_path): diff --git a/viewer-hg-convert.shamap b/viewer-hg-convert.shamap index 29f98ed8cf8ef719883a113c95e6b732cac188a4..891eb98eef9879223459c0a5819ce1a86e619c18 100644 --- a/viewer-hg-convert.shamap +++ b/viewer-hg-convert.shamap @@ -14430,3 +14430,104 @@ ac617ee90acf68794feef501b99ae43ab538a558 09f13edf6aa8c1cef43c8ba7f17289e75096a6a f84f5fca57946f838e79a59be20dffe407e9d3a7 edb3d5536c38643633925215404f2f02350f37d4 426780dc180359b13f72bb6a259f9c4effe88cf9 fe1a7607de6ce5c3dedf96907e114ca0a208076a edef0997a11b5e3bc1c82cce0509e0d57bdde64b 6b93a09d0cdf42d7cee85979de6d7b18e34f6dd1 +b140fb0f294a7cae1181edb342294f0c372a052d a6250fa92374d84353e5d80d38bafc0a315a9d71 +6cf3df8ac3c7712f1a8058e0d6f42761ecc63d58 462b1c235a145dec4b89cdb9f3c107f2dcdd048f +070724e750c4bdd0eedefdb8fd4554e69e0ad33e ffca5f9c5c2ac2c8b201e1dc262371087f3f116d +5f627e224ba5a0c8a63044ea91d9cb7e55f485e6 70e4af736964c211ea0e66e154255c0fb9fc4a1f +de1c17c35aa42c6421c60ebd9102da151d78b1c1 5d67b10edea1f8696886d3d0479c784943fd228c +e2fe42293f8a5a879b4c9a4206dd43c81f385720 c68776612c1f2895629f8712b7b8293d8f0cd833 +cd7e437979644107c314493e41fb39bc126caf97 80af8db446dfec8baf360c709ef7eb990dafaf74 +6247e22de57b7a78eae29758d816dae4c328c8e7 7d2e13e2bd90397984edd7d6b1de1641c546d3a0 +0a5fa7cb1858f4f87a594c740e49c6029cf61439 4f100e626f2d5b0d68c0cd581a1136404466316d +1f4097b566c0c9395477219fa921ad24fdc7d252 5ab43707d58a1b9681d1935396aba08144ba96b8 +d2430c126b94dc6bc30eb0676ae4d6aa4bf81ab4 c3852476e859ad0bf2db7739185bb52442ca0498 +16040352ffd3f8d126e6fb5233e219b3840e4baf d13df6d264e1a58187545b5cfc2e83d37fcc0aee +5ba552b6dd1585e2518b69afc7c6cb01d5bfb5bf 1d78d0e00428c1df177699cde1347c86a6e0da3c +fba2f283e8847b9eaadcb7c78c220442bc61273a 54f5159608a71a8e6a7c6118e94128be35f5b94c +f9766c168cb00ce2e293377f3587a0b398c10951 2cd0ffda361c57134f3fe87784d308f208f44340 +82b23a0e487bd95c6b6dbfd47f7724b14d4807cd 2ce97abf67d8e47f378adb352733bbe515f68763 +72651623d96deee014411daeb82d50452261e0b3 0d637cf64f9c61aafb938be19e6b77d0d75d2256 +359f03b1285092f52ca9cd8c1b2653d182568fd8 fed92bc4562639d565716008264fe7357e5e5493 +708e00baf7cd7b47dbfcc0dce45e2eb305fe3b72 bb9243c01e89446d08fd62b4ea874dc870a1e871 +f7714ce278de8b0aa577c7160e8770f0ecf432b2 5bff02eeef4689558df52f72a8f8a82d619f092b +a8ed6873b6dba8eb5b7cd04ca5182d1c8820ca8a 9624351548184433776f16552da60487e663be08 +ffe8d0aa373cb42df6893b707027f66f3cf6694c 1fcfc45f02a5c3da4d5135167ec350fc916efdce +6fd0d0bcdb5edc3509d5a810cae5e7a22d0eb82c 1fcfc45f02a5c3da4d5135167ec350fc916efdce +08dfb2e4ed346ca38b3b59f2450c37f69e1ee671 bd299f8f759355320d1fe2ca19b599b77be0bad7 +5f7a90472c8c317a7531f919188daf506873790c 9d8ac18944420fdb0e9c600ac688d15860a289f6 +d1348e4ef737bc13dd223b62a2e41c38ffe30c72 0420007883104eaf3073c8d750edeccd830e1080 +3fad13218df677671f46c16962658f3ab42c975a 3f804a666358e9ae5af5beb69aad4c7b15f02f5b +9577c104c8201f5fc18d326a6837db7bf1ad6353 380b963a1f0f87a2c3d5290117518da6e83d83ee +0deb0a34cff7921b00a8e0c9cf366fa766bb9c34 14e17bde662cadb7835fe8bbcdceb5a83ec1c510 +e72b2aa52f48f786aa1a75ce436e62099665dcf6 d39aac8b222feb2955f3b630438a164ed4528c25 +9cb9aa264a2e231369de9ff9ea752d40ad9fcdd2 9b0a9bf5ce2f04ff3fd6caf8dbd30f7539586985 +a9163992e7050cb01bbdcadb78dbddc77d840488 edb69650e477033a04e25dd7b66b35fce24dc836 +0aac191d03179a59d41163be52860c3c26a37849 3a171f9cdbda0ba8cef60c33a11559273227b416 +b3bb873255af4849703bc17c81dbf755f22dbcf7 8582ab0f137b3e3bf85e931c550e4b0c7ba77ca1 +36e8ba1ae0728814a9f6f771b9380c7624c6af75 73a7e5749b0cc59ea73687dd9223d902e9dfcd80 +9cb4d9eb3d2df7dda2bfa3b9e8f623dff03dedc9 ced75bc3ce177acd84e83d79d6ae9c5f3118d3e2 +e0cd410398f70b7fbea7e04248c308f61dbf4b99 6c711bf31d62fb882dd4acbec5f518904b7b0183 +93bed3d76df0ccd9acb15d2e35dca67b2e9b0dc7 25017ca844f16f7251b7a41450deda304e0a6ba0 +5e8110decca97a55ac9fe68c2625dd36d77ec2a7 c075a1ed884ee002f6e18f564890e1fb17081667 +394d4cad28a28edce20eef31fa80a355559c7875 9c595e435fb3f2bac594c4bca503f47973275ca2 +17459d6abeb5289c6cf4e2e948b0687a2ddb0431 0bc0dcfa8873ca252fa22e2232518db481b6cfb6 +33601045919daf0e1dd3275abc3c59f767c09950 94982effd5cc02216ef6a9f43285749acb60ec1a +565c110b72319fa973446814e551ad16e10a65ad 78b3304e3ff93810feeda98347aa44a97595e61f +93190a6f49225ea2e3d2ce69626c9a7533300f53 19f58f962a66fef84261b7b8d9ca29242c566c1d +ed2c851222c480d2d277c65e16cb193302d3a3e9 8f7ce29375da74dab526e8adb7b54870e145aac2 +9834412a934f93b3bf8aeb036bce0c7992042862 9fe3d3ab9dc7d5cd1fd0ee997248d3c445c99c14 +15267760d50c1aadb7f808d987ebfc6657830841 36949020e376f0a6a071cf64f714a4a54f4b6968 +eec90bdee54a588efe8518426a19a52770e1d1cc 57be583d7b844321a3c792a53ca20c3d7bef27e5 +d9125878d02521ec0ab2a4b974b5a1faaed004c5 653a6c7743f3eb23b853ecc54b703d8a0e36eefd +934cf4e6d1eaf2707e6239ab80d0c566329f9cb3 32a4ec227b638cb0a4e1c238902bfa3fb99b1b2f +346bf54e88d566da15ad09f7df78f55ac6d6ced7 461feca8921050c640c07c7e00b72b0aecf4acb2 +10dceeb7dbaf22857e6fdf45b7380238a7bbb869 c50a896787b44164995d4121044129780693ff5f +f26fbc0cf6ad8ebbecdffba20e575834d135ffa0 3e75204640193b1337295ef3d05b416c131956f8 +d4a428559d3b107c0da7e8adf63970069b36cd35 06a41d63494131ac94990030e30b9525be10ece0 +56c391335a4ec4dc6ce45019fe236f0543f4a7a7 e3d8033c70ad10c0a54b291c195f8764869c6541 +7f8780db973eefb93fff212350abc447b8bc3cbc 8651c7b505d4ca24551954334737e3c6885e255d +c02a766081eda6cc1d80bd6c19b41787e2541993 3816752a14f68c6b41ea6c9ea8180d80cb9eb3e2 +06a9be592bad3bdb0f843a88ade668b98c293016 3ae24f3a621a6efc2a845f88fe56ac0f8b618beb +6b93e59e4942e2cb27431b20c243f1ebc5639c29 b2309808b156d54f25c21c68130da5fff16f5352 +0066c8b1620ef553c509a27121ef5d22b877064e 70933bb6ec87f8a251165e41db4c58f33e365c84 +e20a25cb260476adef2c108277ad87a9a2a90873 d17aa37a74bfc9ff7f6a3720f1bf23a8dea6c8f4 +d0ee75b942c5e0858f24c3b7aa0c26b919f1b7d8 b9f2438cc54e059cb0fc6a04c933db5028a148f2 +ec6a34eb37a6b5c7f36ea25752ae235346585ccd 3aafb01f4d8b4da78b0ba748df89c222eef03c86 +00e2b47aff44d0b80ae12a13c27450fea551004d 0704c40eb014577dd5843424d25e7bb73f43940c +b1d92d7b39d6cb05728f27a9678d1fe08cea87c6 07c8441b1b55e4b9a13a89c5105d2913980cb128 +ec71fe47d2c4cdf16f4972fb743c844a0905ab21 6ac0bc6f805f62bcc579057fd0379f99f7a13c25 +6e9644d49652a6e1953d8bd791fad27942af2f2a 484e32d2b9a8721a4fc46d0f4093aa45a835a2b9 +12f41f9809967be695ccb52b33097452c3b37159 178809a07578142bfbe5ebb4e44a6239a39b2b90 +bc716311be35b0586dabcee225ecce302295e8b5 8dccf0ffabf5fbe36e1b29b66e4a747c4fe5a1e1 +b8873253909069c4750a1ecca80735db762ea92e 52031bc79f08c7d1e4ddfbdd580a15344e02a20f +b520fb6d3d0f7972f106349e00819726b7cac9bc c9359a4f6ceff438c736e589c2ed35d1a889dae3 +82b4da888fc0d3ceed08988d94505385aea9b4f6 1c1bb9d8880c8cbebf0dae6901cc57a7580fe7a3 +8703b77fd914bce4145c8ba318d3605ae6cbbbf5 390d85cb3d6c8f17843680f6022bf3dbbfb62a67 +919a72408d72e55a219a88959986271926c76dd9 4d11122fa058a801d0f57c8898c0867e55a18035 +89be09c64c7f23b5cb6862b713ba9f43baeab6b1 f8cfde7fd7bd189bbeb93b09c7ea9296d9e059a2 +832c18c5075bfaf4e5dbab56592b628ffc2484f4 855c3cb89918ed1ebf4c724811f94bfa8a5d5aeb +88bc7aea10a76df348ae9bc271aa74fd7c838b69 aec30358ef4786af41af2f3fc6fa787ea5a85682 +2f176370fedbee5e3fe37b2cf27eb94bc199e2ae df08d42aff5264cea1747d9a0937efef58a2ceda +c00e7b247ccb1bf600c44203af00c94759c23e59 c2a6a7bd29949b6de93260614a63a2b5135e8d0b +48cc49a039c39ee92c5a90f0ba155b5a92a408a8 696ad5f3d808e1a2d6b0ebffea0d9c337194c74f +108cb92a2943ae5b274a43b9912fb97ed71fa9ba a042ece75362ff6b83010f3c66c8c3f5fe8c2a36 +5413225c8797e25fb42d314b172d4abd02f64d25 12351e182354413334fa8d0e1c773501c0d93a90 +1121237696041ebc58933ff0ea9cd1ee8566eb11 ef165d65c72aa68c12ba4503925214dc07a92d8a +ca6a373ba89b7c74132b324f5ae2964160c01833 cc98bba7c26b2d2c9a65b95bd5618e14be8df8d5 +e90f089fae1224b29e1b047e9be2c1b653e224c4 72cceacad6f470c919f5a52fd4007098715af7c1 +81e8feff93c19164d9319d100a848673b7c76730 252779212dc40b64f9291c1287bd6f7c29f48377 +54e904d0062a98e9aa7f4935aa5671a6eeb647cb 741eb25e921cd0f8f274a660a31169284d47cdad +84318fea200ddc5b502d51f68f92f31eac939556 f0b8e4748ec61c862d084b9eebe8eb37dfc1ef88 +144e4ef8c73291f488b4aeff55dfb2616571c009 a15dac7cf1f9056702c85c134c21b92fbc7a5849 +200575dbef612f1bd91db72242355519534b9fdd a2e46778a30ee390acfacf8009eec0acca441090 +2bfffe15ff3e4ef98dfc84c6e7303cbb33619154 12659fe5f0852cbbc2b3db4757ec25f525632240 +92443bdeff135c9032b618da17f883c35323e2b0 055fe04592f29645af4452b56cedf68209668b17 +524c1736684dc38ff3b381f968fec709f96f70cd 4105a6fd17b55cc83c332561347dae978edc3ebf +796dd7513d261c7d3479afc32ecc39dd174965b9 849432193dbf5fe86dde65edc25560a1e9909c16 +6361273ae0f4f8fb876d3c1396d52c630a211460 70fc718d68cd079396863bfbc61e5770984adadf +adddb5d790b8eb43c52992f730f2ec450731ab16 100999bf3348eef87c917b47c269dd450eed9db9 +5bcf7a83d56a6f26721548c2022462d708131116 1d4dc477ab14450a989fddc92e46f305cb5d2970 +f75c3fb19b8dffabe3510c45ead576a0534a569d d999e6b90aa03e1a97f530da74a5b7fc1df1d2b2 +29a591d8188a8cbc555c5ea9def1d397604ddb1f de9a0847cd5b883d96c4e48ae5866b3563f17309 +23a287269bc1e0cdfa4fdb0abb90fb34fce2f2e2 f68fdc49adf2d06c680b95a9c1c864343ca82882 +23a287269bc1e0cdfa4fdb0abb90fb34fce2f2e2 291d3b2d1d3496c7d02419059be50ecf824b7157